当前位置: 首页 > 科技观察

WebRTCServer通用架构

时间:2023-03-12 07:59:26 科技观察

1.Mesh(P2P)简介Mesh服务器架构实际上是标准P2P通信模式的混合体。每个P2P连接都有独立的传输策略控制,在一定程度上保证了通信质量。但是,这种架构对于客户端系统来说是一种浪费。一方面,需要分配更多的端口,消耗更多的系统资源;另一方面,由于需要向其他三个客户端发送本地音视频数据,对上行网络带宽的消耗,在相同带宽条件下,支持的多人通话数量相对有限,并且视频质量(比特率)也比较低。这种架构更适用于网络条件较好、人员较少的情况,比如一对一的场景。缺点占用大量带宽。以上图为例,假设所有上下行媒体流占用的带宽都是1MB,那么每个客户端需要提供3MB的上行带宽和3MB的下行带宽,每个客户端消耗的总带宽为6MB。如果复用PeerConnection通道,还需要建立6个链接。b.占用客户资源。如上图所示,每个客户端在通信过程中需要同时对三个媒体流进行编码,分别发送给其他三个参与者,而不是共享一个编码后的媒体流。因此,它会占用更多的客户端资源。优点A.占用服务器资源最少。这也很好理解,因为根本没有流媒体服务器,只需要一台ICE穿透服务器就可以满足P2P打洞建立连接。b.成本最低。与其他架构类型流媒体服务器需要大量的资金和人力成本不同,它节省了大部分在服务器上的支出。C。权力下放。充分利用客户端的计算能力,在边缘计算时代,未来可能会出现新的机遇和挑战。2.MCU(Multi-pointControlUnit)简介MCU将接收到的多路码流进行转码混合,输出单路码流到各个终端,节省了终端用户的下行带宽,可以有网络条件的用户自定义输出视频不同码率的码流,让多人场景有更好的用户体验。一个典型的应用场景是多人音视频通话。这种架构更适用于客户端条件较差的场景,比如多人使用手机进行视频通话,服务端可以抵消移动端的资源消耗。缺点服务器压力最大。MCU服务架构要求系统提供一个集中的MCU混流服务器,所有媒体流的解码、编码、转码、混流都在服务器端完成。如上图所示,四个客户端需要将各自的媒体流推送给MCU服务器,然后MCU服务器对四个媒体流进行解码和混合,最后将合并后的媒体流发送给四个与会者。所以MCU架构的服务器压力非常大,也是三种服务架构中压力最大的。b.复杂的自定义布局。一般情况下,MCU服务器只对一个通道合并后的媒体流进行混合编码。上图中的四位参会者接收到相同的混合媒体流,他们看到的视频画面也是一致的。如果与会者想改变视频画面的布局,比如放大某个人的视频画面,或者关闭某个人的视频画面,通常都不能令人满意。但是,我们也可以定义一个单独的信令逻辑来请求MCU服务器对单个媒体流进行编码,并将其发送给有特定需求的参与者。但是,需要限制或避免所有参与者都有相似的需求,否则MCU服务架构会退化为SFU服务架构。C。成本最高。如果资金允许,还是应该考虑引入先进的GPU加速服务器,提高流媒体服务器的混音能力。但是,成本也会相应增加。优点A.最小的带宽占用。以上图为例,假设每个媒体流占用的带宽为1MB,每个客户端消耗的总带宽为2MB。如果复用PeerConnection通道,只需要建立四个链接。b.客户端解码压力小。由于每个参与客户端只需要对一个媒体流进行解码,因此可以替代单独对每个参与者的媒体流进行解码的情况,而另外两种服务架构需要对其他参与者的媒体流分别进行解码。3.SFU(SelectiveForwardingUnit)介绍SFU是解决服务器性能问题最有吸引力的方法,因为它不涉及视频解码和编码的计算成本,并且以最低的开销转发各种媒体流。典型应用场景一对多的直播服务。这种架构适用于大多数中等人数的情况和场景,比如大班、多人语音通话等。缺点a.客户端解码压力大。这类似于Mesh服务架构,每个客户端需要解码n-1个媒体流。如上图所示,每个客户端需要同时编码一个媒体流和解码三个媒体流。b.服务器成本也比较高。其实一般来说,SFU架构的服务器成本介于Mesh架构和MCU架构之间。但是,这也取决于SFU服务架构的大小和复杂度。优点A.服务器压力适中。虽然需要部署流媒体服务器,但是SFU架构与MCU架构不同的是,它不需要对媒体流进行解码和混流。SFU服务器只负责媒体流的转发或存储,不做编码、解码、转码、混音等对算力要求比较高的任务。因此,服务器端的压力远低于MCU。b.适度的带宽使用。以上图为例,仍然假设每个媒体流占用的带宽为1MB,则每个客户端的上行带宽为1MB,下行带宽为3MB,每个客户端消耗的总带宽为4MB。很明显,占用带宽(4MB)介于Mesh架构(6MB)和MCU架构(2MB)之间。C。灵活的布局控制。由于每个参与者都拉取其他参与者的媒体流,因此每个用户都可以动态更改其本地屏幕布局,例如放大和缩小。如果您不想看到某个人的视频片段,您也可以退订该人的媒体流。结束语本文介绍了Mesh、MCU、SFU这三种WebRTC服务架构的基本情况,也讨论了各自的优缺点。虽然它们都存在着各种不足,但都对WebRTC实时音视频通信技术的发展起到了一定的推动作用。Mesh、MCU、SFU这三种服务架构有很多值得学习和借鉴的地方。现在很多高级的服务器解决方案并不是单独使用某种服务架构,而是组合使用。比如我们自己的WebRTC流媒体服务器就采用了MCU+SFU的混合模式。因此,在技术选择上没有绝对。我们需要根据自己的具体业务场景和技术储备来选择最合适的方案。作者介绍刘震,社区编辑,百家云集团流媒体高级研发工程师。他是典型的音视频技术爱好者。曾就职于广电巨头和音视频互联网公司。非常扎实的WebRTC、FFmpeg和Electron知识。