webrtc学习--了解webrtc服务器
文章目录
- 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)连接,
- 优点:
- 实现简单,不需要服务器中转数据,只需要webrtc通信模型就可以实现。
- 可以p2p,充分的利用了终端的带宽资源
- 节省了服务器带宽资源(服务器一般是专线,这种方案不需要服务器转发,可以很大的节省带宽)
- 缺点:
- 与多人通信时,参与者越多,对终端带宽要求越高,需要将音视频流发送给各个终端。
- 与多人通信时,对终端配置要求也比较高,需要解多路流。
- 对终端间的网络要求较高,需要能进行nat穿透
2.2 MCU
- 优点:
- 技术成熟,在硬件视频会议应用广泛。
- 方便集成,服务器偏于接入不同的音视频数据,通过解码再编码。
- 所有的终端画面一致,都是通过服务器编码再转发的。
- 缺点:
- 服务器需要解码再编码混流,运算量很大,对服务器算力要求很高。
- 服务器重新解码再编码混流然后转发,这过程会造成延时。
- 由于算力瓶颈,所以MCU对接入的终端容量有限,不太适合接入太多终端同时进行会议。
2.3 SFU
- 优点:
- 音视频数据直接转发,不需要编码、解码,对服务器性能要求一般。
- 直接转发,不进行解码,编码和混流,有效的降低了延迟,提高了实时性。
- 由于可以直接对流处理,这样灵活性更高,对流的操作性更好。
- 缺点:
- 参会人同时观看多路视频,可能会出现不同步。
- 同一路视频流,不同的参会人可能观看不一致。
- 带宽消耗最大(每个终端需要上传自己的音视频流,同时,在同一房间内,需要下载其他的所有终端的视频流)
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服务器相关推荐
- WebRTC 学习之 WebRTC 简介
本文使用的WebRTC相关API都是基于Intel® Collaboration Suite for WebRTC的. 相关文档链接:https://software.intel.com/sites/ ...
- WebRTC学习笔记
http://blog.chinaunix.net/uid-24567872-id-3961702.html 1. WebRTC学习 1.1 WebRTC现状 本人最早接触WebRTC是在 ...
- 智能会议系统(30)---WebRTC学习之一:开篇
WebRTC学习之一:开篇 一.无插件的实时通讯 想像一下,如果你的手机.电视.电脑都可以通过一个平台进行通信,想像一下,你可以在Web应用中轻松地加入视频聊天和p2p数据分享,这就是WebRTC的愿 ...
- WebRTC学习与DEMO资源一览
一. WebRTC学习 1.1 WebRTC现状 本人最早接触WebRTC是在2011年底, 那时Google已经在Android源码中加入了webrtc源码,放在/external/webrtc ...
- 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 ...
- webrtc学习记录三【创建基于RTCPeerConnection本机内的1v1音视频互通】
系列文章目录 webrtc学习记录一[媒体录制MediaRecorder] webrtc学习记录二[基于socket.io创建信令服务器聊天室] 目录 系列文章目录 前言 一.媒体能力的协商过程 1. ...
- 智能会议系统(33)---WebRTC学习之四:最简单的语音聊天
WebRTC学习之四:最简单的语音聊天 VoiceEngine中与最简单语音聊天相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver ...
- 智能会议系统(32)---WebRTC学习之三:录音和播放
WebRTC学习之三:录音和播放 VoiceEngine中与录音和播放相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver Voice ...
- webrtc 学习博客
这是一个非常不错的webrtc学习网站如下 博客链接:http://www.cnblogs.com/lingyunhu/tag/webrtc%20android%20ios/ 今天这篇文章主要总结目前 ...
最新文章
- szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】
- 人工智能都沸腾3年了,现在就业情况还乐观吗?
- koa+mysql+vue+socket.io全栈开发之web api篇
- Linux 切换目录命令cd
- CUDA编程指南阅读笔记(六)
- CCNP学习笔记15-RSTP
- ConneR and the A.R.C. Markland-N CodeForces - 1293A(暴力)
- 数据结构(java语言描述)顺序栈的使用
- java中哲学家就餐死锁_哲学家就餐问题与死锁总结
- 【Rényi差分隐私和零集中差分隐私(差分隐私变体)代码实现】差分隐私代码实现系列(九)
- Python字符串详解
- 【SpringBoot_ANNOTATIONS】自动装配 03 方法 构造器位置的自动装配
- linux 汇编 `.eabi_attribute',简单的GBA/NDS汇编程序讲解(ARM汇编)(2008-09-06)
- 高等数学学习笔记——第四十讲——微积分基本公式
- C51单片机的初次使用
- QML 图形渲染 - Displace
- 图灵的文章“Computing machinery and intelligence”译文
- 人脸识别嵌入式Linux芯片瑞芯微RV1109参数介绍
- 【PSO三维路径规划】粒子群算法融合鸡群算法多无人机三维路径规划【含Matlab源码 1792期】
- *SAS语言结构**
热门文章
- C++中的构造和解析
- dubbo的后台管理以及监控中心
- android不能相应点击事件吗,为什么我的onClick事件不能响应了(android)
- 数据库的优化以及如何提高数据库性能
- 智能化低压台区适用的智能漏电空开功能有哪些?
- Drools从入门到精通之KIE
- 网络安全 Kali web安全 基于SMB协议收集信息
- python3.7调用摄像头拍摄脚本
- CSS DIV盒子塌陷问题------为什么会出现此现象?How to solve it efficiently ?快到碗里来!
- linux vsftpd 磁盘限额,[转载]Serv-U组建FTP使用磁盘限额的解决方法