聊聊WebRTC网关服务器2:如何选择PeerConnection方案?
《聊聊WebRTC网关服务器》系列文章系由WebRTCon2018中网易云信音视频技术专家的分享内容《从零开始构建音视频网关服务器》整理而成,该系列文章将和大家分享网易NRTC在WebRTC网关项目的自研过程中遇到的一些问题,以及我们最终的解决方法。
《聊聊WebRTC网关服务器》第二篇文章将和大家分享如何选择PeerConnection方案。
在会议场景下,网易NRTC的WebRTC网关使用的是SFU方案,如上图举例所示,每个WebRTC上行一路媒体数据到WebRTC网关服务器,同时还需要从网关接收下行的三路媒体数据,对于一个WebRTC客户端来说就有多路流。对于这种多流的场景,我们有两种PeerConnection方案可以使用:
1)单个PeerConnection里有多个media stream(bundle);
2)为不同的media stream创建不同的PeerConnection。
那我们如何选择PeerConnection的方案呢?
首先我们来看看单PeerConnection方案,所有的客户端和服务器之间只需要建立一个PeerConnection,这个PeerConnection是一个双向的PeerConnection,它既可以发数据,也可以收数据,这个方案简单明了,实现时候要注意一个问题,就是Chrome和Firefox在实现单PeerConnectionbundle时采用的SDP方案是不一样的。Chrome是用了Plan B的方案,Firefox是用了UnifiedPlan的方案。当然Chrome未来即将支持UnifiedPlan,而当前要使用单PeerConnection方案就必须在Server端编写兼容代码。PlanB采用的是一个m行,多个a行来描述多流,而UnifiedPlan是多个m行,描述多流,具体的做法RFC草案文档里面有详细描述,我这里就不赘述了。
那么单PeerConnection有什么优势呢?
1)Server端媒体处理代码相对简单;
2)服务端性能较好,只需要建立一个PeerConnection连接,DTLS握手只需要做一次。单PeerConnection又有什么劣势?
1)服务器需要编写兼容不同浏览器的代码;
2)不同用户的下行媒体流过多后,SDP里面m行或a很多,导致SDP长度过长;特别是当用户频繁进出或者媒体状态发生改变时,SDP需要进行频繁Update, SDP传输耗费的带宽就会很多;
3)Firefox Unified Plan在多人场景下,较高的概率下会出现崩溃Bug,我们已经向Firefox提交了bug。
而相对单PeerConnection,多PeerConnection的方案就比较便于理解了,如图A/B/C/D四个人的会,对于A来说有一个上行的PeerConnection,以及3个下行的 PeerConnection对应B/C/D。每一个用户的上下行数据都是分开的,这个也是WebRTC比较推荐的方案。
这个方案主要的难点是服务端要去维护每个用户的上下行PeerConnection对应关系,整体的代码逻辑较复杂。但是它的兼容性比较好。所以NRTC的WebRTC网关最终选择了多PeerConnection方案。
在分享完PeerConnecton的方案后,下面就进入Server的线程方案的选择和优化。这个也是网关服务器架构设计的核心部分。《聊聊WebRTC网关服务器》第三篇文章将具体为大家介绍如何优化Server的线程方案。
——推荐阅读——
聊聊WebRTC网关服务器1:如何选择服务端端口方案?
Wireshark抓包分析——TCP/IP协议
Wireshark对HTTPS数据的解密
网易云信IM小程序上线?我们是这么做的!>>
全面复盘!深度剖析直播答题产品架构的难点与坑>>
如何快速设计短信验证码>>
如何做好Android 端音视频测试>>
聊聊WebRTC网关服务器2:如何选择PeerConnection方案?相关推荐
- 聊聊WebRTC网关服务器1:如何选择服务端端口方案?
<聊聊WebRTC网关服务器>系列文章系由WebRTCon2018中网易云信音视频技术专家的分享内容<从零开始构建音视频网关服务器>整理而成,该系列文章将和大家分享网易NRTC ...
- 即构自研WebRTC网关服务器架构实践
演讲 / 黄开宁 整理 / 小极狗 作为实时音视频领域最火的开源技术,WebRTC 点对点的架构模式,无法支持大规模并发.如何在架构中引入服务端,一直是开发者关注的热点.5月20日,在WebRTCon ...
- 【WebRTC研究(2)】Kurento作为IPC的WebRTC网关(译)
快速阅读本文 如果将WebRTC仅仅作为协议转换,而不进行编解码,简直是杀鸡用牛刀,更是对如此复杂框架的亵渎,因为转码能够实现: 适配不同的接收者的编码格式需求. 自动调整码率,以适应不同的网络带宽, ...
- 牌类游戏使用微服务重构笔记(八): 游戏网关服务器
网关服务器 所谓网关,其实就是维持玩家客户端的连接,将玩家发的游戏请求转发到具体后端服务的服务器,具有以下几个功能点: 长期运行,必须具有较高的稳定性和性能 对外开放,即客户端需要知道网关的IP和端口 ...
- 高并发服务器开源项目,百万级高并发WebRTC流媒体服务器设计与开发(示例代码)...
第1章 课程导学与准备工作 本章主要介绍为何要学习WebRTC流媒体服务器开发,以及本门课能为我们带来哪些收获.之后会为大家介绍本课程内容具体安排,最后给出如何学好这门课程的一些学习建议.希望大家都能 ...
- 调用ice服务器_Nodejs+socket.io搭建WebRTC信令服务器
前言 我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了. 对于 WebRTC 来说,它有一整套规范,如使它使用的接口.使用SDP进行媒体协商.通过ICE收集地址并 ...
- nginx搭建网关服务器
一.业务背景分析 前一段时间,需要开发一套业务系统,此系统需要对外统一提供api服务,但这些服务在内部是由多个业务子系统分别提供. 经过分析,此业务系统需要具有以下这么几个特性 1.不同的api服务由 ...
- Nodejs+socket.io搭建WebRTC信令服务器
前言 我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了. 对于 WebRTC 来说,它有一整套规范,如使它使用的接口.使用SDP进行媒体协商.通过ICE收集地址并 ...
- 柏云服务器点歌系统IP,点歌系统网关服务器
点歌系统网关服务器 内容精选 换一换 Atlas 500 Pro 智能边缘服务器(型号 3000)的端口规划如图1和表1所示:两台Atlas 500 Pro 智能边缘服务器(型号 3000)配置双机备 ...
最新文章
- mysql指定当前时间为默认时间_MySQL设置当前时间为默认值的方法
- p2p項目”復活“之想
- c语言倒计时不影响进程_2017级C语言大作业 - 见缝插针
- C++ Primer 5th笔记(chap 16 模板和泛型编程)成员模板
- 寄存器自动化配置通用案例
- VirtualBox压缩vmdk、vagrant打包box一口气全对
- 圈钱跑路 ERC20 Token 合约代码分析
- 超级详细的Tcpdump的用法
- C++ 复制控制之复制构造函数
- Linux命令修复方法,在Linux终端运行sudoedit -s /命令看未修复和已修复的效果
- 博图程序需要手动同步_贴吧求助帖博图实例单按钮控制灯的程序
- jee neow_JEE7:展望新时代
- php-fpm启动条件,php-fpm的启动、重启
- unity3d 自动变化大小_自动做游戏(1),自动生成人物侧面图
- ajax爬取微博,自动滚屏抓取新浪微博
- YYKit笔记之FPS
- Bridging legacy APIs 桥接遗留API
- Spring Boot实现QQ邮件发送,用户注册功能——前后端分离版
- linux~tar压缩文件夹到指定文件夹 --- 相对路径
- Java实现 LeetCode 21 合并两个有序链表
热门文章
- 怎样利用好单片机上的存储器资源来实现OD的存储与访问
- 算法复习(7)有序二叉树
- 解决android应用程序适用新老android系统版本方法
- 伊利诺伊香槟分校计算机科学,伊利诺伊大学香槟分校计算机科学与工程世界排名2019年最新排名第24(ARWU世界排名)...
- 盖瑞解剖学: 临床实践的解剖学基础 Gray‘s Anatomy: The Anatomical Basis of Clinical Practice 高清英文原版
- 如何让自己的网站快速被百度搜索引擎搜索到
- JavaSE(十三)——Swing
- 光流 | 稠密光流估计(基于LK光流)(源代码分享)
- 光流 | OpenCV实现简单的optical flow(代码类)
- 刷magisk模块后不能开机_联想启天商用电脑刷BIOS或维修换主板后 开机叫两声处理办法...