写在前面:
MCU:Multi-point Control Unit 多点控制单元
SFU:Selective Forwarding Unit 选择性转发单元
一、MCU解决方案
MCU的做法是多人视频会议的传统解决方案,并且使用多年取得了巨大成功。这一成功可以归功于它需要客户端更少消耗这一事实。该架构基于具有中心点保持与每个参与者一对一的流的特性。中心元件接收并混合每个传入的音频流和视频流,以合成一个单一的流出到每一个参加者。在视频会议行业对于这些集中元件的一个常见术语是多点控制单元(MCU)。在实践中,使用一个MCU的通常是指一个混合器容器。
上图为画面合成广播码流走向图,用来说明转发流程。其中VMP是画面合成器,MT1、2、3分别为参与画面合成的终端,且MT1、VMP挂载在转发板1下,MT2、MT3挂载在转发板2下。
黑色实体线为码流的第一步走向,各终端将码流打给自己所挂载的转发板上。黑色虚线为码流的第二步,转发板将收到的码流转发给画面合成器。MT2以及MT3的虚线需要注意,因为发出来的码流不属于广播性质,只是单一的打给画面合成器,所以如同上文所提到的,从发送端所挂载的转发板出来后,直接打给了接收端。红色实体线为码流传输的第三步,码流从画面合成器出来后,属于广播性质,会打给会议的所有接收终端。在MP2上,码流被复制成两份,分别打给了MT2、MT3。红色虚线即为上文所提到的两个转发板之间的桥交换。
优点和缺点:
优点:MCU是供传统设备操作间很好的解决方案。MCU将接收到的多路流进行转码和混合,并向每个终端输出单路流的做法,节省了终端用户的下行带宽,并且还能够对不同网络条件的用户,订制不同码率的输出视频流,让多人场景有更好的用户体验。典型的应用场景是多人音视频通话。它们还允许全位速率适配,因为混频器可以产生不同的输出流,所以每个接收器有不同的品质。混合器解决方案的另一个优点是它可以利用硬件设备编解码。
缺点:主要缺点是在MCU的基础设施成本高。此外,由于混合需要解码和再编码,这引入额外的延迟和质量的损失。最后,转码和组合物可在理论上导致对应用程序的用户界面的弹性较小(尽管有此问题的解决方法)
二、SFU的解决方案:
该架构基于具有中心点从每个发送器接收一个流并发送出一个流到每一个参与者。这个中心点只做数据包检测和转发,而不是昂贵的编码和实际的媒体的解码。常见术语是SFU,是一种通过服务器来路由和转发 WebRTC 客户端音视频数据流的方法。
具有较好的延迟性、与传统的mixer解决方案相比没有质量劣化。SFU是解决服务器性能问题的有吸引力的方法,因为它不涉及视频解码和编码的计算费用,它以最低的开销来转发各路媒体流,典型的应用场景是1对多的直播服务
这种方案非常适合大并发的事实会议和直播。目前较成熟的服务提供商就是声网
发送端采 集音视频流、前处理、编码后发送至声网实时传输网,接收端从实时传输网获取到 音视频流,然后解码、后处理、播放/渲染。以上声网通道(频道)内通话,SDRTN 只做传输,不做合流
音频处理流程
一般来讲,A跟B语音通话的过程是这样的:
1)A客户端设备采集音频(比如用麦克风采集音频等)
2)对采集到的音频进行前处理(比如降噪、回声消除等)
3)将音频编码后发送给Agora云服务端
4)Agora声网服务端传输音频发至接收端B
5)B客户端收到音频后进行解码/后处理等
6)B客户端播放音频
视频处理流程:
一般来讲,A跟B视频通信过程是这样的:
a) A客户端设备采集视频(比如用摄像头获取视频数据等)
b) 对采集到的视频进行前处理(比如美颜、滤镜等)
c) 可以进行本地预览
d) 将视频编码后发送给Agora云服务端
e) Agora 服务端传输视频至接收端B
f) B客户端收到视频后进行解码
g) B客户端对解码后的视频进行后处理
h) B客户端渲染视频
三、对比适用性:
1、假设你提供企业级服务,且有较好的宽带和高效的硬件(即一个企业内部服务),参加人数是有限的,那么你非常适合MCU方案。
2、一般来说,如果你提供大规模服务的,应优先考虑到Router的方法。Router传输接近把情报在网络的边界,构建最终用户应用程序时,以达到更好的可扩展性和灵活性的网络的范例。
问答
Q1:平台互动和流媒体互动的异同?
A1:平台互动是通过MCU进行编解码,画面合成混音等再发送至SVR进行画面显示。流媒体互动是将裸数据发送至声网,然后再传输至SVR进行画面合成。
Q2:码流的转发和原理?
A2:平台互动是终端将码流发送至MCU进行编解码,然后通过画面合成将码流发送至SVR的显示。流媒体互动是将终端的码流信息发送至声网Agora 服务端,只做传输收发,不做合流。再将码流分别发送至SVR显示,由SVR进行画面合成。
Q3:MCU和SFU的实时性?
A3:SFU的实时性要好一点,第一是因为声网相当于在网络上开发了一个独特的传输层,传输速率可以达到专网的速度;第二是SFU只做转发,编解码以及画面合成都在SVR设备,但是MCU需要同时处理大量的编解码的信息,效率会降低。
Q4:两种方式下的网络压力和对网络带宽的要求?
A4:MCU的网络压力和对带宽的要求更低一点。因为多个终端将码流发送至MSU上进行处理,最终只有合成画面一路的码流发回到SVR上。而SFU是有多少个终端就有多少条码流发送至SVR,因此对于SVR接收端的网络压力和带宽占用都会更大。