多人音视频实时通讯是怎样的架构?( 二 )

  • 另一方面,在多人通信时,如果有部分人不能实现 NAT 穿越,但还想让这些人与其他人互通,就显得很麻烦,需要做出更多的可靠性设计 。
  • MCU 方案MCU 主要的处理逻辑是:接收每个共享端的音视频流,经过解码、与其他解码后的音视频进行混流、重新编码,之后再将混好的音视频流发送给房间里的所有人 。
    MCU 技术在视频会议领域出现得非常早,目前技术也非常成熟,主要用在硬件视频会议领域 。不过我们今天讨论的是软件 MCU,它与硬件 MCU 的模型是一致的,只不过一个是通过硬件实现的,另一个是通过软件实现的罢了 。MCU 方案的模型是一个星形结构,如下图所示:
    多人音视频实时通讯是怎样的架构?

    文章插图
     
    MCU 方案架构图
    我们来假设一个条件,B1 与 B2 同时共享音视频流,它们首先将流推送给 MCU 服务器,MCU 服务器收到两路流后,分别将两路流进行解码,之后将解码后的两路流进行混流,然后再编码,编码后的流数据再分发给 B3 和 B4 。
    对于 B1 来说,因为它是其中的一个共享者,所以 MCU 给它推的是没有混合它的共享流的媒体流,在这个例子中就是直接推 B2 的流给它 。同理,对于 B2 来说 MCU 给它发的是 B1 的共享流 。但如果有更多的人共享音视频流,那情况就更加复杂 。
    MCU 主要的处理逻辑如下图所示:
    多人音视频实时通讯是怎样的架构?

    文章插图
     
    MCU 处理逻辑图
    这个处理过程如下所示:
    1. 接收共享端发送的音视频流 。
    2. 将接收到的音视频流进行解码 。
    3. 对于视频流,要进行重新布局,混合处理 。
    4. 对于音频流,要进行混音、重采样处理 。
    5. 将混合后的音视频进行重新编码 。
    6. 发送给接收客户端 。
    那 MCU 的优势有哪些呢?大致可总结为如下几点:
    • 技术非常成熟,在硬件视频会议中应用非常广泛 。
    • 作为音视频网关,通过解码、再编码可以屏蔽不同编解码设备的差异化,满足更多客户的集成需求,提升用户体验和产品竞争力 。
    • 将多路视频混合成一路,所有参与人看到的是相同的画面,客户体验非常好 。
    同样,MCU 也有一些不足,主要表现为:
    • 重新解码、编码、混流,需要大量的运算,对 CPU 资源的消耗很大 。
    • 重新解码、编码、混流还会带来延迟 。
    • 由于机器资源耗费很大,所以 MCU 所提供的容量有限,一般十几路视频就是上限了 。
    SFU 方案SFU 像是一个媒体流路由器,接收终端的音视频流,根据需要转发给其他终端 。SFU 在音视频会议中应用非常广泛,尤其是 WebRTC 普及以后 。支持 WebRTC 多方通信的媒体服务器基本都是 SFU 结构 。SFU 的拓扑机构和功能模型如下图:
    多人音视频实时通讯是怎样的架构?

    文章插图
     
    SFU 方案架构图
    在上图中,B1、B2、B3、B4 分别代表 4 个浏览器,每一个浏览器都会共享一路流发给 SFU,SFU 会将每一路流转发给共享者之外的 3 个浏览器 。
    下面这张图是从 SFU 服务器的角度展示的功能示意图:
    多人音视频实时通讯是怎样的架构?

    文章插图
     
    SFU 功能示意图
    相比 MCU,SFU 在结构上显得简单很多,只是接收流然后转发给其他人 。然而,这个简单结构也给音视频传输带来了很多便利 。比如,SFU 可以根据终端下行网络状况做一些流控,可以根据当前带宽情况、网络延时情况,选择性地丢弃一些媒体数据,保证通信的连续性 。
    目前许多 SFU 实现都支持 SVC 模式和 Simulcast 模式,用于适配 WiFi、4G 等不同网络状况,以及 Phone、Pad、PC 等不同终端设备 。
    SFU 的优势有哪些呢?可总结为如下:
    • 由于是数据包直接转发,不需要编码、解码,对 CPU 资源消耗很小 。
    • 直接转发也极大地降低了延迟,提高了实时性 。
    • 带来了很大的灵活性,能够更好地适应不同的网络状况和终端类型 。
    同样,SFU 有优势,也有不足,主要表现为: