《聊聊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方案?相关推荐

  1. 聊聊WebRTC网关服务器1:如何选择服务端端口方案?

    <聊聊WebRTC网关服务器>系列文章系由WebRTCon2018中网易云信音视频技术专家的分享内容<从零开始构建音视频网关服务器>整理而成,该系列文章将和大家分享网易NRTC ...

  2. 即构自研WebRTC网关服务器架构实践

    演讲 / 黄开宁 整理 / 小极狗 作为实时音视频领域最火的开源技术,WebRTC 点对点的架构模式,无法支持大规模并发.如何在架构中引入服务端,一直是开发者关注的热点.5月20日,在WebRTCon ...

  3. 【WebRTC研究(2)】Kurento作为IPC的WebRTC网关(译)

    快速阅读本文 如果将WebRTC仅仅作为协议转换,而不进行编解码,简直是杀鸡用牛刀,更是对如此复杂框架的亵渎,因为转码能够实现: 适配不同的接收者的编码格式需求. 自动调整码率,以适应不同的网络带宽, ...

  4. 牌类游戏使用微服务重构笔记(八): 游戏网关服务器

    网关服务器 所谓网关,其实就是维持玩家客户端的连接,将玩家发的游戏请求转发到具体后端服务的服务器,具有以下几个功能点: 长期运行,必须具有较高的稳定性和性能 对外开放,即客户端需要知道网关的IP和端口 ...

  5. 高并发服务器开源项目,百万级高并发WebRTC流媒体服务器设计与开发(示例代码)...

    第1章 课程导学与准备工作 本章主要介绍为何要学习WebRTC流媒体服务器开发,以及本门课能为我们带来哪些收获.之后会为大家介绍本课程内容具体安排,最后给出如何学好这门课程的一些学习建议.希望大家都能 ...

  6. 调用ice服务器_Nodejs+socket.io搭建WebRTC信令服务器

    前言 我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了. 对于 WebRTC 来说,它有一整套规范,如使它使用的接口.使用SDP进行媒体协商.通过ICE收集地址并 ...

  7. nginx搭建网关服务器

    一.业务背景分析 前一段时间,需要开发一套业务系统,此系统需要对外统一提供api服务,但这些服务在内部是由多个业务子系统分别提供. 经过分析,此业务系统需要具有以下这么几个特性 1.不同的api服务由 ...

  8. Nodejs+socket.io搭建WebRTC信令服务器

    前言 我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了. 对于 WebRTC 来说,它有一整套规范,如使它使用的接口.使用SDP进行媒体协商.通过ICE收集地址并 ...

  9. 柏云服务器点歌系统IP,点歌系统网关服务器

    点歌系统网关服务器 内容精选 换一换 Atlas 500 Pro 智能边缘服务器(型号 3000)的端口规划如图1和表1所示:两台Atlas 500 Pro 智能边缘服务器(型号 3000)配置双机备 ...

最新文章

  1. mysql指定当前时间为默认时间_MySQL设置当前时间为默认值的方法
  2. p2p項目”復活“之想
  3. c语言倒计时不影响进程_2017级C语言大作业 - 见缝插针
  4. C++ Primer 5th笔记(chap 16 模板和泛型编程)成员模板
  5. 寄存器自动化配置通用案例
  6. VirtualBox压缩vmdk、vagrant打包box一口气全对
  7. 圈钱跑路 ERC20 Token 合约代码分析
  8. 超级详细的Tcpdump的用法
  9. C++ 复制控制之复制构造函数
  10. Linux命令修复方法,在Linux终端运行sudoedit -s /命令看未修复和已修复的效果
  11. 博图程序需要手动同步_贴吧求助帖博图实例单按钮控制灯的程序
  12. jee neow_JEE7:展望新时代
  13. php-fpm启动条件,php-fpm的启动、重启
  14. unity3d 自动变化大小_自动做游戏(1),自动生成人物侧面图
  15. ajax爬取微博,自动滚屏抓取新浪微博
  16. YYKit笔记之FPS
  17. Bridging legacy APIs 桥接遗留API
  18. Spring Boot实现QQ邮件发送,用户注册功能——前后端分离版
  19. linux~tar压缩文件夹到指定文件夹 --- 相对路径
  20. Java实现 LeetCode 21 合并两个有序链表

热门文章

  1. 怎样利用好单片机上的存储器资源来实现OD的存储与访问
  2. 算法复习(7)有序二叉树
  3. 解决android应用程序适用新老android系统版本方法
  4. 伊利诺伊香槟分校计算机科学,伊利诺伊大学香槟分校计算机科学与工程世界排名2019年最新排名第24(ARWU世界排名)...
  5. 盖瑞解剖学: 临床实践的解剖学基础 Gray‘s Anatomy: The Anatomical Basis of Clinical Practice 高清英文原版
  6. 如何让自己的网站快速被百度搜索引擎搜索到
  7. JavaSE(十三)——Swing
  8. 光流 | 稠密光流估计(基于LK光流)(源代码分享)
  9. 光流 | OpenCV实现简单的optical flow(代码类)
  10. 刷magisk模块后不能开机_联想启天商用电脑刷BIOS或维修换主板后 开机叫两声处理办法...