深入解析WebRTC网络架构:Mesh、MCU和SFU的工作原理

0. WebRTC:Mesh/MCU/SFU网络架构

1. 前言

  1. WebRTC网络架构有Mesh、MCU,SFU三种,其中:
    1. Mesh:成本最低,但没有对多人实时互动场景提供很好的支持。
    2. MCU:支持多人实时互动,需要对音视频流进行重新解码、混流、编码、对服务器要求高,成本以及延时也是最高。
    3. SFU:支持多人实时互动,不需要在服务器端对媒体流进行编解码,因此降低了对服务器的要求,延时也低。
  2. 下面是对三种网络架构基本概念,优缺点等内容介绍。

2. 目录

  1. Mesh网络架构
  2. MCU网络架构
  3. SFU网络架构
    1. Simulcast和SVC模式

1. Mesh网络架构

1. 基本概念

  1. Mesh网络架构是将多个终端之间两两进行连接,形成一个网状结构。
  2. 比如 A、B、C、D四个终端进行多对多通信,当A想要共享它的音视频流时,它需要分别向B、C和D发送数据。当B想要共享媒体,需要分别向A、C和D发送数据,依次类推。
  3. 示例图如下:

image.png

  1. 上图四个参与者,如果每个音视频流占1M带宽,那每个参与者需要把自己的音视频流发给其它三个参与者,需要3M上行带宽,同时从其他三个参与者获取音视频流,需要3M下行带宽,即每个参与者总共需要6M上下行带宽。

2. 优点

  1. 不需要服务器中转数据,STUN/TUTN 只是负责 NAT 穿越,利用现有WebRTC通信模型就可以实现,不需要开发媒体服务器。
  2. 充分利用了客户端的带宽资源。
  3. 节省了服务器资源,服务器带宽价格昂贵。

3. 缺点

  1. 共享端共享媒体流的时候,需要给每一个参与者都转发一份媒体流,对上行带宽的占用很大,参与者越多,占用带宽就越大。
    1. 并且客户端的CPU、Memory等机器和带宽资源是有限的,资源占用和参与者人数成线性相关的,导致多人通信的规模有限,超过 4 个人时,就可能会有问题。
  2. 在多人通信时,如果有部分参与者不能实现NAT穿透,还想与其他参与者互通,就需要更多的可靠性设计。
  3. 不利于媒体集中处理,比如媒体录制不方便,需要额外从终端上上传一份音视频流到存储服务器。

2. MCU网络架构

1. 基本概念

  1. MCU(Multipoint Conferencing Unit)方案由一个服务器和多个终端组成一个星形结构。
  2. 各终端将要共享的音视频流发送给服务器,服务器端会将在同一个房间中的所有终端的音视频流进行混合,生成一个混合后的音视频流再转发给各个终端。
  3. 示例图如下:

image.png

  1. 上图四个参与者,如果每个音视频流占1M带宽,那每个参与者需要把音视频流发给MCU服务器,需要1M上行带宽,MCU服务器进行混流后如果音视频流还是1M,那么MCU服务器发送给每个参与者,每个参与者需要1M下行带宽,即每个参与者总共需要2M上下行带宽。
  2. MCU网络架构会对服务器造成很大压力,因为需要解码、转码、混流、编码等操作,同时也会带来更大的延时。

2. 优点

  1. 技术成熟,在硬件视频会议中应用广泛。
  2. 可以作为音视频网关,通过解码、再编码可以屏蔽不同编解码设备的差异化,满足更多集成需求。
  3. 将多路视频流混合成一路视频流,让所有参与者看到相同画面,用户体验好。
  4. 利于媒体集中处理,比如进行媒体录制时只需要录制一路流,可以节省带宽。

3. 缺点:

  1. 重新解码、转码、混流、编码需要大量的运算,对CPU、Memory机器资源消耗很大,并且会带来更大的延时。
  2. 对服务器压力很大,一台服务器能够混流的数量有限。
  3. 在只需要对多个参与者中的一个参与者进行媒体处理场景不方便,比如只对其中一个参与者进行放大、美白滤镜处理。

3. SFU网络架构

1. 基本概念

  1. SFU(Selective Forwarding Unit)方案也是由一个服务器和多个终端组成星型结构。
  2. 但与MCU不同,SFU不对音视频进行混流,收到某个终端共享的音视频流后,直接将该音视频流转发给房间内的其他终端。
    1. 实际上是一个音视频路由转发器。
  3. 示例图如下:

image.png

  1. 上图四个参与者,如果每个音视频流占1M带宽,那每个参与者需要把音视频流发给SFU服务器,需要1M上行带宽,同时从SFU服务器获取其他三个参与者音视频流,需要3M下行带宽,即每个参与者总共需要4M上下行带宽。

2. 优点

  1. 由于是数据包直接转发,不需要编码、解码,对 CPU、Memory机器资源消耗小。
  2. 直接转发音视频流也大大降低了延迟,提高了实时性。
  3. 具有灵活性,能够更好地适应不同的网络状况和终端类型。
  4. 能够单独对参与者进行媒体处理,比如进行对视频人物进行放大、美白滤镜处理等。

3. 缺点

  1. 由于是音视频数据包直接转发,参与人观看多路视频时可能会出现不同步,相同的视频流,不同的参与者看到的画面也可能不一致。
  2. 参与者同时观看多路视频,在多路视频窗口显示、渲染等会带来麻烦。
  3. 对多人实时通信进行录制,相比MCU网络架构需要录制多路流,同时多路流也会带来很多回放的困难。

4. Simulcast和SVC模式

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

1. Simulcast 模式

  1. Simulcast 模式指视频的共享者可以同时向SFU服务器发送多路不同分辨率的视频流(一般为三路,如 1080P、720P、360P)。而SFU服务器可以将接收到的三路视频流根据各终端的情况而选择其中某一路视频流发送。
    1. 例如,PC端网络特别好,给PC端发送1080P分辨率的视频,而移动端网络较差,就给Phone发送360P 分辨率的视频。
  2. Simulcast模式可以灵活又智能地适应不同的网络环境。

image.png

2. SVC模式

  1. SVC是可伸缩视频编码技术,在视频编码时将视频分为两个或多个层,这些层中至少有一个是基本层,其余的为增强层。
    1. 基本层包含视频信号基本的也是最重要的信息,接收端接收到基本层就能重建得到基本质量的图像。
    2. 增强层包含视频信号的细节信息,接收端将基本层和增强层一起解码,就能重建出更高质量的图像。
  2. 例如将视频分为多层:基本层为240P编码数据,增强层为480P和720P的细节补充编码数据,共享方会把240P编码数据以及480P、720P的补充编码数据都发出去,接收方则根据网络环境选择合适的数据包。
    1. 如果网络状况良好就选取720P,如果网络状况不佳就选择480P或者240P。
  3. 这样无论网络环境如何变化客户端都可以流畅播放,改变的只是画面清晰度。

image.png

物联沃分享整理
物联沃-IOTWORD物联网 » 深入解析WebRTC网络架构:Mesh、MCU和SFU的工作原理

发表评论