WebRTC / Jitsi / 多人视频通讯常用架构 Mesh / MCU / SFU

问题:为什么要搞这么多架构?

WebRTC 虽然是一项主要使用 P2P 的实时通讯技术,本应该是无中心化节点的,但是在一些大型多人通讯场景,如果都使用端对端直连,端上会遇到很带宽和性能的问题,所以就有了下图的三种架构。

一、Mesh

每个端都与其它端互连。

以上图最左侧为例,5个浏览器,二二建立 P2P 连接,每个浏览器与其它 4 个建立连接,总共需要10个连接。如果每条连接占用1M带宽,则每个端上行需要4M,下行带宽也要4M,总共带宽消耗20M。而且除了带宽问题,每个浏览器上还要有音视频“编码/解码”,CPU使用率也是问题,一般这种架构只能支持4~6人左右,不过优点也很明显,没有中心节点,实现很简单。

二、MCU (MultiPoint Control Unit)

这是一种传统的中心化架构(上图中间部分),每个浏览器仅与中心的MCU服务器连接,MCU服务器负责所有的视频编码、转码、解码、混合等复杂逻辑,每个浏览器只要1个连接,整个应用仅消耗5个连接,带宽占用(包括上行、下行)共10M,浏览器端的压力要小很多,可以支持更多的人同时音视频通讯,比较适合多人视频会议。但是MCU服务器的压力较大,需要较高的配置。

三、SFU(Selective Forwarding Unit)

上图右侧部分,咋一看,跟MCU好象没什么区别,但是思路不同,仍然有中心节点服务器,但是中心节点只负责转发,不做太重的处理,所以服务器的压力会低很多,配置也不像MCU要求那么高。但是每个端需要建立一个连接用于上传自己的视频,同时还要有N-1个连接用于下载其它参与方的视频信息。所以总连接数为5*5,消耗的带宽也是最大的,如果每个连接1M带宽,总共需要25M带宽,它的典型场景是1对N的视频互动。

目前,随着5G技术的推广,可以预见带宽越来越不是问题,所以SFU在未来,可能会更有优势。

建议:如果规模不大(5人以下) Mesh框架就够用了,毕竟实现简单;如果50人以下,且带宽有限,选择MCU比较适合;如果规模更大,且带宽良好,SFU相对更适合。

四、拓展

附上几个github上比较火的webrtc MCU/SFU server项目:

  1. https://github.com/Kurento/kurento-media-server  (kurento官网的文档和示例很齐全,对于开发者来说,非常友好)。
  2. https://github.com/lynckia/licode (官网文档很少,学习曲线略陡峭)。
  3. https://github.com/jitsi/jitsi (据说性能不错,而且还提供了一个视频会话的子项目jitsi-meet,但是文档仍然不多,得生啃代码)。
  4. https://github.com/pion/webrtc/ (github上star很高,go语言开发,但目前好象尚不太成熟,文档也不是太全,未来看好)

 

(SAW:Game Over!)

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: WebRTC是一种实时通信协议,可用于在Web浏览器之间进行音频、视频和数据通信。多聊天室和多人视频WebRTC的强大功能之一。 多聊天室指的是在WebRTC应用中可以同时存在多个聊天室,在每个聊天室中可以有不同的用户群体进行实时交流和互动。这种功能可以实现更好的组织和管理多人参与的实时通信需求,例如在线教育平台的教室或多人协作工具中的团队聊天室等。 多人视频是指在WebRTC应用中可以支持同时多人参与的视频通话。通过WebRTC的技术,用户可以在浏览器中进行多人视频会议,实现高清的实时视频传输和互动。多人视频可以广泛应用于在线会议、远程教学、虚拟会议等场景,提供更加便捷和灵活的沟通方式。 WebRTC基于开放的标准和技术,通过浏览器实现实时通信功能,无需安装额外的插件或软件。它具有良好的跨平台和跨设备的兼容性,可以在不同的操作系统和设备上进行多聊天室和多人视频。同时,WebRTC也提供了丰富的API和功能,方便开发者进行定制化开发和集成。 总之,通过WebRTC实现多聊天室和多人视频功能,可以满足用户实时通信的需求,并在各种应用场景中提供更好的沟通和协作体验。 ### 回答2: WebRTC(Web实时通信)是一种开放标准的实时通信技术,用于在网页浏览器之间实现音频、视频和数据的传输。它使用了基于网页的应用程序和浏览器本身提供的API,无需安装任何插件或额外的软件。Webrtc支持多聊天室和多人视频通话。 多聊天室可以通过使用WebRTC的数据通道来实现。数据通道是一种在浏览器之间传输任意数据的机制,可以用于消息传递和实现聊天室功能。每个浏览器可以连接到不同的房间,并通过数据通道向其他浏览器发送消息。这样,用户可以在不同的房间中进行聊天,并与同一个房间的其他用户实时交流。 多人视频通话也可以通过WebRTC来实现。WebRTC提供了实时的音频和视频传输功能,通过使用浏览器提供的媒体API,可以在网页中直接进行音视频通话。多人视频通话可以通过将多个浏览器连接到同一个房间来实现。每个浏览器可以实时传输和接收音频和视频数据,并同时显示其他人的视频流。这样,多个用户可以在同一个网页中进行实时的多人视频通话。 总之,WebRTC可以通过数据通道实现多聊天室功能,并通过媒体API实现多人视频通话功能。它为网页开发人员提供了一种简单而强大的方式来实现实时通信和协作,为用户提供了流畅的聊天和视频体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值