虽然WebRTC的特点是PeerConnection,即点对点传输,只需要服务器做信令交换。但是随着场景增大,比如多人会议等,就会面临一个问题:客户端需要对N个客户端发送流数据且需要管理之间的状态。这对于客户端的消耗是十分巨大且后续无法扩展会议规模的。

这时候就需要引入流媒体服务器的概念,通过一个中转站帮助客户端转发流数据。客户端仅需要和服务器对接即可。通过这样的结构可以节省上行/下行带宽,成本由服务运营商承担。其中流媒体服务器也分为多种结构(MFU/SFU)。下图为上述三种形式的对比:

可以看到在没有中转服务的Mesh结构中,各个客户端的上下行都是4Mbps,而在MCUMultipoint Conferencing Unit,多点会议单元)架构中,由于MCU具备合流、编码以及转发功能,可以将多个客户端的数据合并打包转发,虽然会带来CPU的消耗,但是带宽成本降低了。而在SFU(**Selective Forwarding Unit,**选择性转发单位)架构中,由于SFU不具备流处理的功能,仅单纯做转发,所以下行带宽维持不变。总结就是:

  1. Mesh结构适合简单场景,小型应用
  2. MCU结构-服务器计算成本巨大
  3. SFU结构-服务器带宽成本巨大

可根据自己的业务场景选择合适的链接结构。

参考:https://techbrood.com/zh/news/webrtc/2019%E5%B9%B4%E5%BC%80%E6%BA%90webrtc%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%80%89%E5%9E%8B%E6%AF%94%E8%BE%83.html