一、为什么需要流媒体服务?

众所周知webrtc原生的网络连接方式是P2P通信模型,即通信双方是对等的。如下图左侧图,通信双方直接进行音视频传输,中间的服务器仅做两端的信令交互。
将这种P2P方式扩展到多人通信也就是所谓的mesh架构,将会演变成下图右侧,这种去中心化架构在人数少(比如只有3、4个人)的时候还是有一定的优势:1、不需要额外的服务器 2、音视频直接传输质量和速度都很好。
但是随着人数的增加,网络拓扑将变得复杂,每个端点的网络带宽负担也会增加。这也就是为什么多人通话需要流媒体服务器的根本原因。

二、有哪些流媒体服务器架构?

本文我们将研究旨在支持浏览器中低延迟视频流的3种拓扑的优缺点:mesh、SFU、MCU。

2.1 mesh点对点(P2P)

P2P是WebRTC应用程序中最容易设置和最具成本效益的体系结构;它也是最不可扩展的体系结构。在网格拓扑中,两个或多个对等方(客户端)直接交谈,或者在防火墙的对面时,通过向它们转发音频、视频和数据流的TURN服务器交谈。

P2P应用程序可能是资源密集型的,因为编码和解码流的负担被卸载到每个对等机,这就是为什么当您只有少数并发用户时,它们性能最佳。虽然您可以通过配置P2P网格网络实现一定程度的可伸缩性,但最终还是会得到一个资源密集型和低效的应用程序。从好的方面来说,网格提供了最好的端到端加密,因为它不依赖于集中服务器对流进行编码/解码。
点对点流:n-1上游和n-1下游
优势

使用基本的WebRTC实现轻松设置
更好的隐私
成本效益高,因为它不需要媒体服务器
缺点

只能连接少数参与者,而不会显著降低流媒体质量
CPU密集型,因为流的处理被卸载到每个对等机

2.2 选择性转发单元SFU

SFU可能是现代WebRTC应用程序中最受欢迎的架构。简而言之,SFU是一个直通路由系统,旨在将一些流处理从客户端卸载到服务器。每个参与者将加密的媒体流发送到一次集中服务器,然后集中服务器将这些流转发给其他参与者,而无需进一步处理。虽然SFU比网格拓扑更高效——例如,在与n个参与者的通话中,每个客户端只有一个上游,而不是n-1上游——但客户端仍然需要解码和渲染多个(n-1)下游,随着参与者数量的增加,这将消耗客户端资源,降低视频质量,从而限制可伸缩性。
SFU流媒体:1个上游和n-1下游

优势

与P2P网格相比,上传带宽要求更低
流是分开的,因此每个流都可以单独呈现——允许完全控制客户端的流布局
缺点

可伸缩性有限
随着一些CPU负载转移到服务器,运营成本更高

2.3 多点会议单元(MCU)

多年来,MCU一直是大集团会议系统的支柱。这并不奇怪,因为它能够通过将大部分CPU密集型流处理从客户端卸载到集中服务器来提供稳定、低带宽的音频/视频流。

在MCU拓扑中,每个客户端连接到集中的MCU服务器,该服务器解码、重新缩放和混合所有传入的流到单个新流中,然后对其进行编码并将其发送给所有客户端。虽然客户端的带宽友好且CPU密集度较低——客户端不必处理多个流,而只需要解码和渲染一个流——但服务器端的MCU解决方案相当昂贵。将多个音频和视频流转码到单个流中,然后以多个分辨率实时编码,CPU非常密集,连接到服务器的客户端越多,其CPU要求就越高。

然而,MCU的最大好处之一是它易于与外部(遗留)业务系统集成,因为它将所有传入的流合并到一个易于消费的出库流中。

MCU流媒体

优势

带宽友好
复合输出简化了与外部服务的集成
当您需要合并许多流时,您唯一的选择(除非您使用XDN方法,我们将在下讨论)
缺点

CPU密集型;流越多,服务器就越大
由于集中处理,单一故障点风险
由于服务器上的计算负载,运营成本高昂

参考:
WEBRTC三种类型(Mesh、MCU 和 SFU)的多方通信架构 - 地铁程序员 - 博客园
webrtc笔记(3): 多人视频通讯常用架构Mesh/MCU/SFU - 菩提树下的杨过 - 博客园
3 Key Approaches for Scaling WebRTC: SFU, MCU, and XDN

webrtc媒体服务器介绍相关推荐

  1. 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器开源项目介绍

    揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...

  2. WebRTC基本介绍

    WebRTC基本介绍 目录 什么是WebRTC WebRTC框架 1. 什么是WebRTC WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是 ...

  3. 《Getting Started with WebRTC》第二章 WebRTC技术介绍

    <Getting Started with WebRTC>第二章 WebRTC技术介绍 本章作WebRTC的技术介绍,主要讲下面的概念:   .  怎样建立P2P的通信   .  有效的信 ...

  4. 一文看懂WebRTC媒体服务器

    WebRTC媒体服务器是 WebRTC 应用中一个可选的组件.也就是说,在大多数常见的使用情况下,你将需要一个. 有不同类型的 WebRTC 服务器.其中之一就是 WebRTC 媒体服务器.你什么时候 ...

  5. VC++ 2017编译WebRTC参数介绍

    VC++ 2017编译WebRTC参数介绍 本文主要介绍VC++ 2017编译webrtc m76版本参数配置,具体代码获取流程请自行阅读webrtc官方文档:https://webrtc.org/n ...

  6. WebRTC媒体服务器开源项目介绍

    https://blog.csdn.net/DONGHONGBAI/article/details/86709662 https://blog.csdn.net/freeabc/article/det ...

  7. WebRTC基础介绍

    WebRTC 全称为:Web Real-Time Communication. 它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer-to-peer(就是浏览器间)的视频交互. WebR ...

  8. 媒体服务器协议,媒体服务器介绍(mediactrl架构)

    5.1.1MediaCtrl媒体控制草案 MediaCtrl是IETF下专门研究和制定媒体服务器控制标准的小组,以SIP和XML为所制定标准的基础.这个工作组的工作包括:定义媒体服务器控制的技术需求说 ...

  9. webrtc 简要介绍

    WebRTC,名称源自网页实时通信(WebReal-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购Global ...

最新文章

  1. Node入门--6--文件系统-创建删除
  2. Linux下进程间通信方式之管道、信号、共享内存、消息队列、信号量、套接字
  3. 大连理工大学 计算机复试分数线,2020大连理工大学考研复试分数线已公布
  4. 只需 5 分钟看完这篇 HTTPS,去阿里面试和面试官扯皮就没问题了!
  5. 有关UNLIMITED TABLESPACE权限
  6. python导出excel文件数字签名_Python使用RSA+MD5实现数字签名
  7. 如何理解np.sum tf.reduce_sum( tf.reduce_max tf.reduce_mean)等对tensor和高维矩阵的axis选择的操作
  8. windows编程 识别拖动_Quicker 解锁新姿势!Windows 还能这么用?
  9. 红外热成像仪原理及应用
  10. 小程序框架kbone与Hybird混合开发
  11. U盘 / 移动硬盘在 Mac 苹果电脑上无法使用问题
  12. 微信小程序flex布局讲解
  13. PostgreSQL13.1-CN-v1.0中文手册.chm下载
  14. 计算机乘法函数公式word,Word表格怎么用公式乘法
  15. Emulex光纤卡lpfc配置文件的修改
  16. android声纹识别技术,基于Android平台的声纹识别系统的研究与实现
  17. CodeForces入门
  18. Vue快速入门(狂神版)
  19. 释放让iBooks占用的冗余空间
  20. JQ动画和特效轮播图

热门文章

  1. ubuntu下的按键精灵xdotool
  2. 疯壳AI开源无人机GPIO(LED航情灯、信号灯控制)
  3. struts2 mysql_Struts2连接Mysql的Crud使用
  4. 用matlab生成srtm,基于MATLAB的SRTM数据完善方法的实验研究
  5. 竞品分析——网易蜗牛读书
  6. linux系统vim下输入回车换行符号的解决方法
  7. 印度今天正式商用5G网络 号称世界最便宜
  8. 第二十三讲 狄拉克函数(冲激函数)
  9. js日期字符串格式转换为年月日时分秒格式
  10. 来自祖安的简单计算器(高精度)