【流媒体】Mesh|MCU|SFU三种流媒体服务器的比较

Mesh方案

1对1的通信模型

有WebRTC基础的应该能看懂下面这个图,关键就是NAT穿越、穿越不成功时的TURN服务器中转、以及Signal信令服务器交换SDP信息

在这里插入图片描述

Mesh通信模型

看下图可知Mesh是基于上图1对1的多对多通信模型,其中每条线路都是P2P,NAT穿越不成功时还是TURN备选
在这里插入图片描述

MCU方案

如图C1、C2、C3……是用户,在某个Room里,用户们进行多人视频交流时,MCU会把视频流和音频流解码拆开分别混合,这样做的好处就是降低了带宽。但是每个用户传入的视频流的分辨率肯定是不同的,MCU会把每个视频流等比例压缩,最后再编码、推流给用户。这样会导致原分辨率高的视频画质被降低,使画面中的某些细节变得模糊

在这里插入图片描述

SFU方案

SFU与MCU有相似之处,但SFU不会对原视频流做编解码,它会把流直接转发给用户,而且用户可以对多路视频流进行任意拖拽,比如C4用户接收到C1、C2、C3三路视频流,C4可以把C1放在左上角或右下角,或把C2放在正中间,这样便大大增加了客户端的灵活性

但是这样做也有弊端,因为SFU不会对原视频做压缩处理,这便对下行带宽有很高的要求,若没达到要求,将会对音视频的质量产生影响

正是如此,WebRTC针对这种情况也提供了很多种解决方案,下面介绍其中最有名的两种方案

simulcast

该方案是通过分层的方式,可以设置成两层、三层或是四层甚至更高层次的分辨率,比如最高层是640360的分辨率,下一层是240120的分辨率,再一层是80*60的分辨率。总之就是按比例的缩放,再上传的时候将三层同时上传,下发的时候SFU会判断整个带宽能否承载下行的数据,如果不能承载便选择低一个层次的分辨率看能否承载,若不能承载,再选择更低层次的,依次下去…

SVC

SVC也是采用分层,但与simulcast不同,后者是独立的层,而前者是相互依赖的。SVC是依赖于最底层(核心层)的,这一层是最小的数据流,它的分辨率也非常低,把它解开的时候画面也是很模糊的,每来一层就会让它变得更清晰,再来一层就会让它恢复为原来的分辨率,通过SVC,当带宽不够的时候就传核心层,带宽够的时候传扩展层,带宽非常好的时候传边缘层

要注意的是,simulcast和SVC不能混用

这两个相比,simulcast的操作更简单一些,实用性更高一些,国内的 声网 便使用的这种方式。SVC更复杂一些,国外的 zoom思科 的解决方案便采用的这种方式

在这里插入图片描述

SFU是当前主流的方案,大多数厂商都采用SFU架构模型

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值