本章将介绍几种多方通信的架构模型,以及比较有名的开源项目的优劣情况,并传授大家如何选择出最适自己或适合团队的开源项目。

12-1 多人互动架构方案

https://time.geekbang.org/column/article/132863
图片.png

  • Mesh 方案,即多个终端之间两两进行连接,形成一个网状结构。比如 A、B、C 三个终端进行多对多通信,当 A 想要共享媒体(比如音频、视频)时,它需要分别向 B 和 C 发送数据。同样的道理,B 想要共享媒体,就需要分别向 A、C 发送数据,依次类推。这种方案对各终端的带宽要求比较高。

  • MCU(Multipoint Conferencing Unit)方案,该方案由一个服务器和多个终端组成一个星形结构。各终端将自己要共享的音视频流发送给服务器,服务器端会将在同一个房间中的所有终端的音视频流进行混合,最终生成一个混合后的音视频流再发给各个终端,这样各终端就可以看到 / 听到其他终端的音视频了。实际上服务器端就是一个音视频混合器,这种方案服务器的压力会非常大。

  • SFU(Selective Forwarding Unit)方案,该方案也是由一个服务器和多个终端组成,但与 MCU 不同的是,SFU 不对音视频进行混流,收到某个终端共享的音视频流后,就直接将该音视频流转发给房间内的其他终端。它实际上就是一个音视频路由转发器。

    12-2 Mesh架构模型详解

    图片.png
    图片.png
    局域网内使用Mesh方案,就不会出现无法连通的情况。

当某个浏览器想要共享它的音视频流时,它会将共享的媒体流分别发送给其他 3 个浏览器,这样就实现了多人通信。这种结构的优势有如下:

  • 不需要服务器中转数据,STUN/TUTN 只是负责 NAT 穿越,这样利用现有 WebRTC 通信模型就可以实现,而不需要开发媒体服务器。
  • 充分利用了客户端的带宽资源。
  • 节省了服务器资源,由于服务器带宽往往是专线,价格昂贵,这种方案可以很好地控制成本。

当然,有优势自然也有不足之处,主要表现如下:

  • 共享端共享媒体流的时候,需要给每一个参与人都转发一份媒体流,这样对上行带宽的占用很大。参与人越多,占用的带宽就越大。除此之外,对 CPU、Memory 等资源也是极大的考验。一般来说,客户端的机器资源、带宽资源往往是有限的,资源占用和参与人数是线性相关的。这样导致多人通信的规模非常有限,通过实践来看,这种方案在超过 4 个人时,就会有非常大的问题。
  • 另一方面,在多人通信时,如果有部分人不能实现 NAT 穿越,但还想让这些人与其他人互通,就显得很麻烦,需要做出更多的可靠性设计。

    12-3 MCU架构模型详解

    图片.png
    那 MCU 的优势有哪些呢?大致可总结为如下几点:
    技术非常成熟,在硬件视频会议中应用非常广泛。作为音视频网关,通过解码、再编码可以屏蔽不同编解码设备的差异化,满足更多客户的集成需求,提升用户体验和产品竞争力。将多路视频混合成一路,所有参与人看到的是相同的画面,客户体验非常好。
    同样,MCU 也有一些不足,主要表现为:重新解码、编码、混流,需要大量的运算,对 CPU 资源的消耗很大。重新解码、编码、混流还会带来延迟。由于机器资源耗费很大,所以 MCU 所提供的容量有限,一般十几路视频就是上限了。

    12-4 SFU架构模型详解

    图片.png
    SFU 的优势有哪些呢?可总结为如下:

  • 由于是数据包直接转发,不需要编码、解码,对 CPU 资源消耗很小。

  • 直接转发也极大地降低了延迟,提高了实时性。
  • 带来了很大的灵活性,能够更好地适应不同的网络状况和终端类型。

同样,SFU 有优势,也有不足,主要表现为:

  • 由于是数据包直接转发,参与人观看多路视频的时候可能会出现不同步;相同的视频流,不同的参与人看到的画面也可能不一致。
  • 参与人同时观看多路视频,在多路视频窗口显示、渲染等会带来很多麻烦,尤其对多人实时通信进行录制,多路流也会带来很多回放的困难。总之,整体在通用性、一致性方面比较差。

目前许多 SFU 实现都支持 SVC 模式和 Simulcast 模式,用于适配 WiFi、4G 等不同网络状况,以及 Phone、Pad、PC 等不同终端设备。

12-5 Licode流媒体服务器架构和特点

https://time.geekbang.org/column/article/134284
图片.png

12-6 Janus流媒体服务器的架构及特点

图片.png

12-7 Medooze流媒体服务器架构及特点

图片.png

12-8 Mediasoup流媒体服务器架构及特点

图片.png

学习资料

从0打造音视频直播系统
https://time.geekbang.org/column/intro/207