WebRTC规范主要介绍了使用ICE技术建立P2P网络连接,即Mesh网络结构。 在WebRTC技术的实际应用中,衍生出媒体服务器的用法。 使用媒体服务器的场景通常是因为P2P连接不可控,可以使用媒体服务器对P2P无法完成的媒体流进行修改、分析和记录。 其实,如果我们把媒体服务器看成WebRTC连接的另一端,就很容易理解媒体服务器的工作原理了。 媒体服务器是WebRTC在服务器端的实现,作为连接多个WebRTC客户端的桥梁,增加了额外的媒体处理功能。 媒体服务器通常根据提供的功能分为MCU和SFU。

1、Mesh网络结构

Mesh是WebRTC多方会话最简单的网络结构。 在这种结构中,每个参与者向所有其他参与者发送一个媒体流,同时接收所有其他参与者发送的媒体流。 据说这是最简单的网络结构,因为它原生支持Web-RTC,不需要媒体服务器的参与。 Mesh网络结构如图

视频会议系统Mesh网络结构

在Mesh网络结构中,每个参与者之间以P2P的方式相互连接,数据交换基本不经过中心服务器(在一些不能使用P2P的场景中,会经过TURN服务器)。 由于每个参与者必须为其他参与者提供独立的媒体流,因此需要 N-1 个上行链路和 N-1 个下行链路。 许多上行链路和下行链路限制了参与者的数量。 太多的参与者会导致明显的滞后。 通常只能支持6人以下的实时交互场景。 没有媒体服务器的参与,Mesh网络结构很难对视频进行额外的处理,不支持视频录制、视频转码、视频合并等操作。

2、MCU网络结构

MCU(Multipoint Control Unit)是传统的集中式网络结构。 参与者仅连接到中央 MCU 媒体服务器。 MCU 媒体服务器将所有参与者的视频流合并,生成包含所有参与者图片的视频流。 参赛者只需拉动合成图即可。 MCU网络结构如图所示。

MCU网络结构

在这种情况下,每个参与者只需要 1 个上行链路和 1 个下行链路。 与Mesh网络结构相比,参与者的终端压力小很多,可以支持更多人同时在线进行音视频交流,更适合多人实时交互的场景。 但是,MCU 服务器负责所有复杂的操作,例如视频编码、转码、解码和合并。 服务器端压力比较大,对配置要求高。 同时,由于汇流屏固定,界面布局不够灵活。

3、SFU网络结构

在SFU(Selective Forwarding Unit)网络结构中,还有一个中心节点媒体服务器,但中心节点只负责转发,不做汇流、转码等需要大的媒体处理任务。 资源,所以对服务器的压力会小很多,服务器配置也没有MCU的要求那么高。 每个参与者需要1个上行和N-1个下行,带宽消耗低于Mesh,但高于MCU。

我们可以把SFU服务器看作一个WebRTC参与者,它与所有其他参与者建立一对一的连接,并充当它们之间的桥梁,同时转发每个参与者的媒体数据。 SFU服务器具有复制媒体数据的能力,可以将一个参与者的数据转发给多个参与者。 SFU 服务器与 TURN 服务器不同。 TURN 服务器只是为 WebRTC 客户端提供的辅助数据转发通道。 在无法使用 P2P 时进行数据透明转发。 TURN 服务器没有复制和转发媒体数据的能力。 SFU对参与实时交互的人数也有一定的限制,适用于在线教学、大型会议等场景。 其网络结构如图

SFU网络结构

标签: 视频会议系统网络拓扑