webRTC之Mesh/MCU/SFU通信架构区别(九)
Webrtc一对一的通信,通常采用的是端到端的方式,那如果多人通信的架构方案一般有这三种常见的方案
Mesh方案
- 不需要服务器中转数据,STUN/TUTN 只是负责 NAT 穿越,这样利用现有 WebRTC 通信模型就可以实现,而不需要开发媒体服务器。
- 充分利用了客户端的带宽资源。
- 节省了服务器资源,由于服务器带宽往往是专线,价格昂贵,这种方案可以很好地控制成本。
- 共享端共享媒体流的时候,需要给每一个参与人都转发一份媒体流,这样对上行带宽的占用很大。参与人越多,占用的带宽就越大。除此之外,对 CPU、Memory 等资源也是极大的考验。一般来说,客户端的机器资源、带宽资源往往是有限的,资源占用和参与人数是线性相关的。这样导致多人通信的规模非常有限,通过实践来看,这种方案在超过 4 个人时,就会有非常大的问题。
- 另一方面,在多人通信时,如果有部分人不能实现 NAT 穿越,但还想让这些人与其他人互通,就显得很麻烦,需要做出更多的可靠性设计。
MCU 方案(MultiPoint Control Unit)
MCU 主要的处理逻辑是:接收每个共享端的音视频流,经过解码、与其他解码后的音视频进行混流、重新编码,之后再将混好的音视频流发送给房间里的所有人。
- 技术非常成熟,在硬件视频会议中应用非常广泛
- 作为音视频网关,通过解码、再编码可以屏蔽不同编解码设备的差异化,满足更多客户的集成需求,提升用户体验和产品竞争力。
- 将多路视频混合成一路,所有参与人看到的是相同的画面,客户体验非常好。
SFU(Selective Forwarding Unit)
目前许多 SFU 实现都支持 SVC 模式和 Simulcast 模式,用于适配 WiFi、4G 等不同网络状况,以及 Phone、Pad、PC 等不同终端设备。
- 由于是数据包直接转发,参与人观看多路视频的时候可能会出现不同步;相同的视频流,不同的参与人看到的画面也可能不一致。
- 参与人同时观看多路视频,在多路视频窗口显示、渲染等会带来很多麻烦,尤其对多人实时通信进行录制,多路流也会带来很多回放的困难。总之,整体在通用性、一致性方面比较差。
- 每个端需要建立一个连接用于上传自己的视频,同时还要有N-1个连接用于下载其它参与方的视频信息,消耗的带宽也是最大的(带宽比较烧钱)
通过上面的分析和比较,相信你已经有了一个大概的认知。如何选择架构方案还需要根据业务场景来判断,没有最好的是只有最适合的。
1.Simulcast 模式
Simulcast 模式对移动端的终端类型非常有用,它可以灵活而又智能地适应不同的网络环境。下图就是 Simulcast 模式的示意图:
2. SVC 模式
SVC 是可伸缩的视频编码模式。与 Simulcast 模式的同时传多路流不同,SVC 模式是在视频编码时做“手脚”。
它在视频编码时将视频分成多层——核心层、中间层和扩展层。上层依赖于底层,而且越上层越清晰,越底层越模糊。在带宽不好的情况下,可以只传输底层,即核心层,在带宽充足的情况下,可以将三层全部传输过去。
同一路流,分成了多具层,核心层,护展层和边缘层,当带宽不足时,由上层逐渐丢弃!
总结
- 由于各方面限制,Mesh 架构在真实的应用场景中几乎没有人使用,一般刚学习 WebRTC 的才会考虑使用这种架构来实现多方通信。(可以简单了解下)
- MCU 架构是非常成熟的技术,在硬件视频会议中应用非常广泛。像很多做音视频会议的公司之前都会购买一套 MCU 设备,这样一套设备价格不菲,最低都要 50 万,但随着互联网的发展以及音视频技术越来越成熟,硬件 MCU 已经逐步被淘汰,当然现在也还有公司在使用软 MCU,比较有名的开源项目是 FreeSWITCH。
- SFU 是最近几年流行的新架构,目前 WebRTC 多方通信媒体服务器都是 SFU 架构。从上面的介绍中你也可以了解到 SFU 这种架构非常灵活,性能也非常高,再配上视频的 Simulcast 模式或 SVC 模式,则使它更加如虎添翼,因此SFU模式已经渐渐成为主流了。
- 目前的实际应用中,使用Simulcast比使用SVC多,webRTC对两种都支持
webRTC之Mesh/MCU/SFU通信架构区别(九)相关推荐
- webrtc服务器架构Mesh/MCU/SFU
互动直播之WebRTC服务开源技术选型 https://www.jianshu.com/p/73f2615dc3ef WebRTC 开发实践:为什么你需要 SFU 服务器 https://cloud. ...
- 多人视频通讯常用架构Mesh/MCU/SFU
问题:为什么要搞这么多架构? webrtc虽然是一项主要使用p2p的实时通讯技术,本应该是无中心化节点的,但是在一些大型多人通讯场景,如果都使用端对端直连,端上会遇到很带宽和性能的问题,所以就有了下图 ...
- WebRTC / Jitsi / 多人视频通讯常用架构 Mesh / MCU / SFU
问题:为什么要搞这么多架构? WebRTC 虽然是一项主要使用 P2P 的实时通讯技术,本应该是无中心化节点的,但是在一些大型多人通讯场景,如果都使用端对端直连,端上会遇到很带宽和性能的问题,所以就有 ...
- WEBRTC三种类型(Mesh、MCU 和 SFU)的多方通信架构
WEBRTC三种类型(Mesh.MCU 和 SFU)的多方通信架构 WebRTC 本身提供的是 1 对 1 的通信模型,在 STUN/TURN 的辅助下,如果能实现 NAT 穿越,那么两个浏览器是可以 ...
- 视频会议服务器SFU、MCU、Mesh三种类型的区别
WebRTC 本身提供的是 1 对 1 的通信模型,在 STUN/TURN 的辅助下,如果能实现 NAT 穿越,那么两个浏览器是可以直接进行媒体数据交换的:如果不能实现 NAT 穿越,那么只能通过 T ...
- (1)Kurento之WebRTC通信架构
关于WebRTC网上有好多介绍,这里我就不详细的叙述了.重点放在WebRTC的项目实施过程,涉及后续开发,将会有详细介绍. WebRTC是由谷歌提出的一套基于UDP协议的网页流媒体协议.有以下 ...
- Tigo发布最先进的无线技术Mesh,作为TS4平台的新太阳能通信架构
Mesh使得每个TS4单元都能充当太阳能电池阵上的信号中继站,并借助近日宣布推出的TAP扩大无线范围 加州洛斯加托斯--(美国商业资讯)--智能组件Flex MLPE平台领域的先锋企业Tigo®今 ...
- WebRTC多人音视频聊天架构及实战
三种模式 简单介绍一下基于 WebRTC 的多人通信的几种架构模式. 1.Mesh 架构 我们之前写过几个 1 v 1 的栗子,它们的连接模式如下: 这是典型的端到端对等连接,所以当我们要实现多人视频 ...
- 网络音视频通信架构-商业模式
视频会议服务端架构 架构 在视频会议场景中,主要有三种类型的服务器架构,Mesh,MCU和SFU,WebRTC主推的是无中心的P2P架构,会为每一个端建立一个PeerConnection对象,这就是M ...
最新文章
- ROS探索总结(一)(二)(三):ROS总体框架 ROS总体框架 ROS新手教程
- CentOS 6.5 安装与配置LAMP
- VTK:绘制截锥体用法实战
- springMVC3学习(四)--訪问静态文件如js,jpg,css
- 【pyqt5学习】——最新版:配置external tools(designer、pyuic、pqrcc)
- rs232读取智能电表_三相电表怎么看度数 怎么计算总电量
- Alibaba Sentinel 限流与熔断初探
- 利用R、Octave、NumPy和SciPy求解线性方程组
- c++运动学正反解 ros_ROS系统MoveIt玩转双臂机器人系列(六)–D-H逆运动学求解程序(C++)...
- [转载] python hex转字符串_Python hexstring-list-str之间的转换方法
- 每日算法系列【LeetCode 1031】两个非重叠子数组的最大和
- 电脑芯片和服务器芯片,王思聪的服务器和我们的电脑有什么区别?
- 【树上分块】【dfs序】2018沈阳网络赛 —— J题
- Java 实现 贪吃蛇 小游戏【附源码】
- MFC开发之显示网页
- mac的python换字体_Mac OSX Yosemite系统字体修改
- python爬微博话题_用Python写一个简单的微博爬虫
- 大学生计算机系统推荐,上大学买电脑?最适合大学生学习用的Windows笔记本电脑推荐!...
- varchar可以设置唯一吗_微信可以设置特效主题皮肤了,满屏幕的小爱心,你心动了吗?...
- centos7是linux内核,在CentOS 7上用源代码编译最新的Linux内核