文章目录

  • webrtc 服务器架构
    • 0 前言
    • 1 服务器架构
    • 2 Mesh 、MCU、SFU的优缺点
      • 2.1 Mesh
      • 2.2 MCU
      • 2.3 SFU
    • 3 开源服务器
    • 4 学习和感受
    • 5 参考博客

webrtc 服务器架构

0 前言

推荐一个零声学院免费教程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:

1 服务器架构


(图片来自网络)

由上图中,我们很清楚的知道在多方通信中,服务器架构有三种,mesh架构、mcu架构和sfu架构。

  • Mesh

    多个终端两两进行连接,与其他所有的终端都能互联通信。

  • MCU

    是由1个服务器和多个客户端组成的。各个终端将自己的音视频发送给服务器,服务器将同一个房间中的所有的终端进行混合编码,并将混合后的音视频流发送给各个终端。

  • SFU

    和MCU一样,是由1个服务器和多个终端构成。不同的是,SFU服务器只对流进行转发,而不进行混合编码。

三种架构中,只有Mesh支持p2p, MCU和SFU只支持服务器转发。

2 Mesh 、MCU、SFU的优缺点

2.1 Mesh

有前面的图中,可以很清楚的知道,这种结构是各个终端之间两两互相连接的,同时都要与ICE服务器(STUN/TURN)连接,

  • 优点:

    1. 实现简单,不需要服务器中转数据,只需要webrtc通信模型就可以实现。
    2. 可以p2p,充分的利用了终端的带宽资源
    3. 节省了服务器带宽资源(服务器一般是专线,这种方案不需要服务器转发,可以很大的节省带宽)
  • 缺点:
    1. 与多人通信时,参与者越多,对终端带宽要求越高,需要将音视频流发送给各个终端。
    2. 与多人通信时,对终端配置要求也比较高,需要解多路流。
    3. 对终端间的网络要求较高,需要能进行nat穿透

2.2 MCU

  • 优点:

    1. 技术成熟,在硬件视频会议应用广泛。
    2. 方便集成,服务器偏于接入不同的音视频数据,通过解码再编码。
    3. 所有的终端画面一致,都是通过服务器编码再转发的。
  • 缺点:
    1. 服务器需要解码再编码混流,运算量很大,对服务器算力要求很高。
    2. 服务器重新解码再编码混流然后转发,这过程会造成延时。
    3. 由于算力瓶颈,所以MCU对接入的终端容量有限,不太适合接入太多终端同时进行会议。

2.3 SFU

  • 优点:

    1. 音视频数据直接转发,不需要编码、解码,对服务器性能要求一般。
    2. 直接转发,不进行解码,编码和混流,有效的降低了延迟,提高了实时性。
    3. 由于可以直接对流处理,这样灵活性更高,对流的操作性更好。
  • 缺点:
    1. 参会人同时观看多路视频,可能会出现不同步。
    2. 同一路视频流,不同的参会人可能观看不一致。
    3. 带宽消耗最大(每个终端需要上传自己的音视频流,同时,在同一房间内,需要下载其他的所有终端的视频流)

3 开源服务器

常见的开源 SFU 服务器有:Licode,Janus,Jitsi,mediasoup,Medooze 等等

下面的几个SFU服务器,记录下来,偏于学习

  • mediasoup

https://github.com/versatica/mediasoup

https://github.com/yanhua133/mediasoup-sfu-cpp

  • licode

https://github.com/lynckia/licode

https://github.com/harvestsure/licode-windows

4 学习和感受

webrtc服务器学习,相应的资料不是很多,有很多的资料都是不全的。需要自己搭建对应的环境,一步步的尝试。同时,这个过程中也能学习到不少的东西,这里面记录下学习和查找的相关资料,方便后续的学习。同时,也能提高自己。锻炼学习的能力。后期,准备深入的学习一下,更深入的了解webrtc

5 参考博客

WEBRTC三种类型(Mesh、MCU 和 SFU)的多方通信架构

WebRTC:Mesh/MCU/SFU三种通信架构

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

WebRTC 开发实践:为什么你需要 SFU 服务器

WEBRTC三种类型(Mesh、MCU 和 SFU)的多方通信架构
webrtc笔记(3): 多人视频通讯常用架构Mesh/MCU/SFU

webrtc学习--了解webrtc服务器相关推荐

  1. WebRTC 学习之 WebRTC 简介

    本文使用的WebRTC相关API都是基于Intel® Collaboration Suite for WebRTC的. 相关文档链接:https://software.intel.com/sites/ ...

  2. WebRTC学习笔记

    http://blog.chinaunix.net/uid-24567872-id-3961702.html 1.     WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在 ...

  3. 智能会议系统(30)---WebRTC学习之一:开篇

    WebRTC学习之一:开篇 一.无插件的实时通讯 想像一下,如果你的手机.电视.电脑都可以通过一个平台进行通信,想像一下,你可以在Web应用中轻松地加入视频聊天和p2p数据分享,这就是WebRTC的愿 ...

  4. WebRTC学习与DEMO资源一览

    一. WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底, 那时Google已经在Android源码中加入了webrtc源码,放在/external/webrtc ...

  5. WebRTC学习进阶之路 --- 五、WebRTC网络知识详解(三)(最全流媒体协议(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL)/SDP)

    WebRTC学习进阶之路系列总目录:https://blog.csdn.net/xiaomucgwlmx/article/details/103204274 RTP:实时传输协议(Real-time ...

  6. webrtc学习记录三【创建基于RTCPeerConnection本机内的1v1音视频互通】

    系列文章目录 webrtc学习记录一[媒体录制MediaRecorder] webrtc学习记录二[基于socket.io创建信令服务器聊天室] 目录 系列文章目录 前言 一.媒体能力的协商过程 1. ...

  7. 智能会议系统(33)---WebRTC学习之四:最简单的语音聊天

    WebRTC学习之四:最简单的语音聊天 VoiceEngine中与最简单语音聊天相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver ...

  8. 智能会议系统(32)---WebRTC学习之三:录音和播放

    WebRTC学习之三:录音和播放 VoiceEngine中与录音和播放相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver Voice ...

  9. webrtc 学习博客

    这是一个非常不错的webrtc学习网站如下 博客链接:http://www.cnblogs.com/lingyunhu/tag/webrtc%20android%20ios/ 今天这篇文章主要总结目前 ...

最新文章

  1. szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】
  2. 人工智能都沸腾3年了,现在就业情况还乐观吗?
  3. koa+mysql+vue+socket.io全栈开发之web api篇
  4. Linux 切换目录命令cd
  5. CUDA编程指南阅读笔记(六)
  6. CCNP学习笔记15-RSTP
  7. ConneR and the A.R.C. Markland-N CodeForces - 1293A(暴力)
  8. 数据结构(java语言描述)顺序栈的使用
  9. java中哲学家就餐死锁_哲学家就餐问题与死锁总结
  10. 【Rényi差分隐私和零集中差分隐私(差分隐私变体)代码实现】差分隐私代码实现系列(九)
  11. Python字符串详解
  12. 【SpringBoot_ANNOTATIONS】自动装配 03 方法 构造器位置的自动装配
  13. linux 汇编 `.eabi_attribute',简单的GBA/NDS汇编程序讲解(ARM汇编)(2008-09-06)
  14. 高等数学学习笔记——第四十讲——微积分基本公式
  15. C51单片机的初次使用
  16. QML 图形渲染 - Displace
  17. 图灵的文章“Computing machinery and intelligence”译文
  18. 人脸识别嵌入式Linux芯片瑞芯微RV1109参数介绍
  19. 【PSO三维路径规划】粒子群算法融合鸡群算法多无人机三维路径规划【含Matlab源码 1792期】
  20. *SAS语言结构**

热门文章

  1. C++中的构造和解析
  2. dubbo的后台管理以及监控中心
  3. android不能相应点击事件吗,为什么我的onClick事件不能响应了(android)
  4. 数据库的优化以及如何提高数据库性能
  5. 智能化低压台区适用的智能漏电空开功能有哪些?
  6. Drools从入门到精通之KIE
  7. 网络安全 Kali web安全 基于SMB协议收集信息
  8. python3.7调用摄像头拍摄脚本
  9. CSS DIV盒子塌陷问题------为什么会出现此现象?How to solve it efficiently ?快到碗里来!
  10. linux vsftpd 磁盘限额,[转载]Serv-U组建FTP使用磁盘限额的解决方法