Webrtc音视频会议之Mesh/MCU/SFU三种架构

总览

基于Webrtc的音视频会议方案中最常用和最基础的架构模式是Mesh,MCU,SFU;目前市面上的各种音视频会议都脱离不开这三种模式,当然有的是基于这三种模式的变种,又或者是这三种模式按照一定的策略进行组合,但是根基还是Mesh/MCU/SFU三种架构;
所以我们有必要详细了解下这三种架构的思想,首先我们来看看Mesh/MCU/SFU三种架构的基础架构图;当然完整的生产架构肯定包含信令服务器等等,但我们在这里关注Webrtc音视视频会议架构本身;列出这三种架构的优缺点,通过这种对比让我们在音视频会议架构设计的时候能选择更合适的架构模式;并且让我们对这三种架构有一个更准确的认识同时为后续为什么我选择SFU架构的Janus项目来研究做准备

Mesh,MCU,SFU基本架构图:

Mesh架构

Mesh架构流量或带宽要求比较大,Mesh架构是利用Webrtc对等连接,在参与会议的各方之间开辟UDP通道,也就是两两进行P2P连接,把媒体流发给参与会议的各方,同时从参与会议的其它方获取媒体流,如上图四个参与方,总共8个连接,如果每个通道占用1M带宽,那每个端需要把自己的流发给其它三个端,也就是上行是3M带宽,同时从其它3个端获取流,也就是下行3M带宽,这样每个端上下行总共6M带宽;
Mesh架构对端的能力要求也是比较高,毕竟参与会议的各方的媒体流的编解码都是在端上面来处理的,图上面的4个参与会议方,那每个端的处理量就是4;结合上面可以看出Mesh一个端能承受的同时开视频的人员更少
Mesh架构不利于媒体的集中处理;例如媒体的录制,你如果不觉得带宽或者流量是问题,再从端上传一份媒体到存储服务器那又另当别论;又或者小哥哥小姐姐直播了一些不该直播的无法进行识别或处理了;再者集成我大讯飞的翻译咋办?不能没有我大讯飞的翻译啊,当然端上做也是可以的,但是毕竟端上算力是有限的;
但是Mesh实现起来技术难度是最小的,实现起来最简单;Mesh架构对服务器资源占用是最小的,只需要一个ICE服务器用来实现P2P穿越就行了,Mesh架构是真正的去中心化,对服务器资源占用是最小的,还有可以充分的利用了端上的算力,边缘计算的时代已经来了,节省不少成本;

MCU架构(MultiPoint Control Unit)

MCU架构对服务器端压力比较大,MCU架构需要一个中心化的MCU服务器,编码、转码、解码、混合都在服务器端做;
如上图MCU架构下的参会的4个端把自己的媒体流上缴到MCU服务器,然后MCU服务器对4个媒体流解码后进行合并,4个流合并成一个媒体流,再发给4个参会人员;因此服务器的压力特别大;所以单台服务器能承受的参会人员特别少,当然一些财大气粗的企业可以加服务器,加高级的GPU
MCU端上各种控制更加复杂 ,现在我和漂亮小姐姐聊天,小姐姐是我日思夜想的,我现在想把她的画面调大,这个实现起来就很麻烦了,因为下发的媒体流是合并的,也就是一个视频流;当然不是不可实现,通过信令服务器下发一个重新合屏的信令我们还是可以看到清晰的小姐姐的画面的;只是相对来讲实现更麻烦;
又比如我希望参会的小姐姐们看到群里最靓的我,那我对我自己上滤镜美白那可就麻烦了
MCU架构占用带宽最小,从前面的描述和从上图中我们可以看到4个参会人员每个人上交一份媒体流如果还是按照1M来算,那上行每个端1M,同时从服务器端获取一份混合过的媒体流还是按照1M算,那每个端上下行总共就是2M;结合上面所述MCU架构
一个端同时能承受更多的人开启视频

SFU架构(Selective Forwarding Unit)

SFU架构服务端压力相对较小,SFU架构看似和MCU一样都有一个中心化的服务器,但是SFU的服务器只负责转发媒体或者存储媒体;不直接做编码、转码、解码、混合这些算力要求较高的工作;SFU服务器接到RTP包后直接转发;
SFU架构占用带宽适中,例如上图,SUF架构参与会议的4个端每个端首先要把自己的流发给服务器,所以每个端上行1M带宽,同时从服务器获取转发过来的其它3个参会人员的媒体流也就是下行3M,这样每个端上下行加一起就是4M;所以它占用端上的带宽在Mesh架构和SFU之间;这种适中的带宽占用在即将到来的5G时代你可以想象!!!!
SFU架构对端和媒体流的控制更简单,还是上面的场景,我想仔细端详日思夜想的小姐姐将她的画面调大,只需要在端上直接放大就行了;另外整个会议中只让我成为最靓的仔,进行美颜啥的实现起来也不算是啥问题了,虽然对端的要求高,但是现在手机或者电脑算力过剩啊,边缘计算发挥到极致,哈哈……,为企业省钱;

总结

互联网时代要求更个性化的体验(美颜,更个性化的控制等等),更大的容积率(也就是更多的用户同时在线);总的来说SFU架构更适合互联网时代;ZOOM会议和腾讯会议这两个比较出名的互联网会议系统都是SFU架构;所以跟风一波后续深入的研究SFU架构;
虽然SUF架构对端的算力要求比较高,更多的计算放到了端上,不过在视频会议或者直播的场景下面,跟多的是一个大画面,其它若干个小画面,而且通过交互控制,例如:同时只显示若干个小画面,滚动的时候动态的再获取其它的参会人员的视频生成小画面;
SFU只负责转发流,所以更高的并发,同时它逻辑简单,更容易的构建高负载架构

引用文章请标明出处,否则可以保留一切追究责任的权利
技术交流:
qq:408365330
微信:egojit

Webrtc音视频会议之Mesh/MCU/SFU三种架构相关推荐

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

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

  2. webrtc服务器架构Mesh/MCU/SFU

    互动直播之WebRTC服务开源技术选型 https://www.jianshu.com/p/73f2615dc3ef WebRTC 开发实践:为什么你需要 SFU 服务器 https://cloud. ...

  3. 多人视频通讯常用架构Mesh/MCU/SFU

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

  4. 视频会议系统EasyRTC常见的几种架构方式及应用场景:MCU/SFU、视频会议、应急指挥、即时通信

    我们这里常说的RTC可以理解为WebRTC技术,因为WebRTC技术是目前使用最广泛的即时通信技术,虽然在早期我们提到WebRTC.提到视频通话就会想到P2P的方式,但实际的视频通话方式背后的逻辑有很 ...

  5. 浅析常用软件架构中的一定要理解的三种架构模型

    2019独角兽企业重金招聘Python工程师标准>>> 常用的软件架构模型可以归类为三种架构模型:3/N层架构."框架+插件"架构.地域分布式架构. 一.三种架构 ...

  6. 深度好文:接入交换机三种架构TOR、EOR 和 MOR:有什么区别?

    大家好,这里是网络技术联盟站,我是瑞哥. 众所周知,数据中心服务器机房的布局通常采用矩形结构,为了保证散热效果,通常将10到20个机柜背靠背.并排排列成一对机柜组(也称为POD),为满足海量服务器连接 ...

  7. webRTC之Mesh/MCU/SFU通信架构区别(九)

    Webrtc一对一的通信,通常采用的是端到端的方式,那如果多人通信的架构方案一般有这三种常见的方案 Mesh方案 即多个终端之间两两进行连接,形成一个网状结构.比如 A.B.C 三个终端进行多对多通信 ...

  8. freeSWITCH + WebRTC 音视频会议

    想把 freeSWITCH 和 WebRTC 组合起来做音视频会议,网站找到的资料都比较老了,自己试验了下,把过程记录下来,有需要的人可以参考. 基本的设想是: JsSIP 用于网页端(Chrome) ...

  9. 音视频开发(一):三种方式绘制图片

    在android开发中我们最常使用的绘制图片的方式就是ImageView,设置src.那么有没有其他方案可以实现图片的绘制呐? 三种方案 通过Imageview设置setImageBitmap fin ...

  10. redis三种架构:主从Cluster哨兵+整合Springboot访问redis

    文章目录 概要:redis集群方案 主从架构 部署主从示例: Redis主从工作原理 Sentinel(哨兵)模式 哨兵的Jedis连接代码: springboot访问哨兵结点 Cluster模式 R ...

最新文章

  1. 干支纪年法简便算法_民间玄学:那些年我理解的何谓“天干”,“地支”,“干支”...
  2. 汤涛院士:科技强,必须应用数学强
  3. windows系统上安装与使用Android NDK r8d(二)
  4. Linux Tun/Tap网口(/dev/net/tun)的读写方法
  5. 【具体数学 读书笔记】1.2 Lines in the Plane
  6. SEO已死,真的吗,十年SEO从业者的思考
  7. 【Struts2】〖登录功能〗Struts2框架实现登录功能
  8. 渗透自学(三)SQL注入(一)
  9. 港股分时交易数据 API 接口
  10. 2020-11-04 [蓝桥杯2018决赛]阅兵方阵
  11. 网上申请办理杭州市民卡
  12. 关系型数据库 遵循ACID原则
  13. python画概率密度图_绘制概率密度
  14. php微信转发无法显示标题图片,微信分享到朋友圈的链接,内容打开正常,但在微信中分享时封面缩略图图像和标题显示不出来?...
  15. WSTMart 1.4.2 发布,让 bug 不再飞
  16. 用pip安装指定版本的包遇到的坑
  17. PostgreSQL开发规范
  18. 用CSS样式完成作业
  19. Google分析统计
  20. 转载:QQ自动强制加好友代码html

热门文章

  1. LeetCode 每日一题 289. 生命游戏 详细题解 C++描述
  2. 第3关 二进制形式安装K8s高可用生产级集群
  3. xtrabackup备份与还原
  4. 【数据结构】c语言基于堆栈实现回溯法自动走迷宫
  5. Hive中order by和sort by的区别?
  6. Arduino学习笔记 超声波避障小车
  7. VALSE2020|底层视觉与图像生成主题Workshop【笔记】
  8. 使用http api升级tr069设备
  9. 千亿级互联网平台技术架构及背后那些事
  10. dcom交互式用户灰色_DCOM配置里 自己创建的服务属性里 交互式用户和启动用户 是灰色的?迷茫了~...