【活动回顾】WebRTC服务端工程实践和优化探索

【活动回顾】WebRTC服务端工程实践和优化探索

 

11月7日,即构和上海GDG技术社区联合举办了实时音视频技术云上技术分享专场,来自即构科技和Bilibili的资深技术专家进行了深度分享。大会吸引了众多开发人员交流、观看,并在活动过程中与分享嘉宾进行了热烈互动,下面我们整理了嘉宾们分享的核心内容,错过活动直播的小伙伴可以继续观看学习。

 

本文是即构科技黄开宁带来的主题为《WebRTC服务端工程实践和优化探索》的技术分享。以下为主要的分享内容:

 

大家下午好,我是来自即构科技的黄开宁,目前在即构科技负责音视频、媒体服务器以及网关的研发和开发,主要是架构的设计和开发,希望本次分享能让大家在WebRTC服务端实现或者项目选型时能带来一些思考。

 

接下来进入主题,今天的分享主要分为三个部分:

第一,WebRTC服务器架构介绍及设计思路;

第二,我们开发一个服务器所需要的技术和面临的难点;

第三,QoS服务质量的实现及优化。

 

一、WebRTC服务器架构介绍和设计思路

 

我们首先要想一下,为什么需要WebRTC服务器?WebRTC服务器它的作用是什么?在大家的认知里面,WebRTC是谷歌开发的一个项目或者是协议,是现在大家比较熟悉的一个点对点通信方案。点对点方案是指双方浏览器之间是直接互联的,如果我们在多方会议的多方通话的情况下,我们各个通话者之间都是直连的,没有经过第三方。

【活动回顾】WebRTC服务端工程实践和优化探索

 

下面来大概看一下它的优劣势:

 

优势

第一,简单。这个模型非常简单,点对点,没有经过中间的一些服务器。

 

第二,延迟小。既然是直连的,我们可能理所当然地认为中间除了这些路由节点之外,就没有其他地方会增加延时了。但是我后面加了一个问号,也就是说未必是这样的。熟悉我们国内运营商网络情况的都知道,联通,移动,电信之间的通信可能是不对称的,如果我是联通,你是移动,咱们直连的话,延迟未必是小的,这个就是我加了一个问号的原因。

 

第三,端对端带宽适应。这个指的是WebRTC可以根据会话者之间的网络情况、带宽情况进行适应。比如当你的接收带宽不够时,我可以降低上行编码码率来适应你,从而达到一个更好的通话效果。

 

劣势

第一,连通性能差。点对点之间,由于所有的网络不是在一个防火墙后,我们可能需要打洞,甚至有一些防火墙非常严格的话,我们连打洞都没办法完成,这会极大的影响服务的连通性。我们首先要发现对方,然后要打洞,如果打洞不成功,还需要通过中转服务器来进行媒体的传输,这个过程可能会快则几秒钟,慢则几分钟。也就是说我们从会话开始到双方建立通信,整个过程是非常复杂、耗费非常长的时间。

 

第二,带宽占用高。所有的与会者是直连的,带来的一个问题是,如果我要看到其他所有人的视频,那么每个人都需要推一路流给我。同样的,其他人也是需要接收除他以外的所有流,这时候我的上行带宽占用是非常高的。在视频会议场景下,少则十几多则二十几个人,现在几百个人的会议也是很常见的。按照我们现行的带宽,是达不到的。

 

第三,编解码压力大。既然每个人的流要单独发送给其他与会者,那么也要单独编解码,要发送N路就要编N路,并且编解码压力是非常大的,不仅移动端没办法承受,甚至我们的PC端也是没办法承受的,这是它很大的一个劣势。

 

在我们实际的应用场景上,如果没有服务器,那么我们也没办法进行录制,无法实现视频回播、鉴黄以及CDN分发等功能。综合考虑,我们就会发现点对点方案可能并没有很好的满足我们当前实际的应用需求。

 

所以这里就要引入一个服务器方案架构,根据刚才提到的点对点三大劣势,我们来重点看看新方案是如何解决的。

【活动回顾】WebRTC服务端工程实践和优化探索

 

连通性

通常我们的服务器都会架构在公网上,所以各个会话者是直接跟我们在公网上的服务器建立连接,省掉了打洞,直接一步到位。

 

网络带宽占用高

假设当前我们这个会议有四方会话,那我的与会者有三路,我只需发一路到服务器上,通过服务器把我这一路转发给其他三路的与会者就可以了,不需要再去多发两路,这样我的上行带宽就从原本的三路变成了一路了;而接收端,引入MCU的概念,为了节省下行带宽,我们可以将这三路混流,再转发给我,那么我的下行也只有一路。

 

编解码压力小

通过优化架构带宽,编解码从原来的N路变成一路,也同步缓解了编解码压力。

 

既然服务器能更好的满足我们的实际应用,那么WebRTC服务器应该怎么进行架构设计呢?开发WebRTC服务器需要哪些技术以及可能会面临哪些难点?WebRTC服务端QoS(服务质量)的实现及优化有哪些重点要注意的?

 

篇幅关系,关于《WebRTC服务端工程实践和优化探索》的完整内容,大家可以通过我们的活动资料包获取,资料包中还有视频回放、演讲PPT等资料。申请活动资料包链接https://www.wjx.top/m/97579006.aspx。

【活动回顾】WebRTC服务端工程实践和优化探索

上一篇:Chrome Devtools performance memory模式的理解 (JS Heap、Documents等)


下一篇:Apache codec的摘要