56云服务器:如何打造自己的WebRTC 服务器

avatar
作者
筋斗云
阅读量:0

近年来,直播竞答、网络游戏直播等新的实时音视频通讯场景不断推陈出新,并成为引领互联网娱乐风向的弄潮儿。实时音视频应用的爆发,也使得WebRTC(Web Real-Time Communication,网页实时通信技术,)技术成为了人们关注的焦点。如何打造自己的WebRTC 服务器呢?下面我先来介绍一下WebRTC 服务器的一些基本内容:

开源的WebRTC 服务器介绍

WebRTC服务端整体分析

通信优化

WebRTC的未来展望

首先,我们会先来了解下一些开源的服务器是怎么做的,我们做事情,在没有头绪的基础上,参考和模仿可能是一种必然流程,毕竟站在巨人的肩膀上,我们的视野才更加开阔。

其次,通过形形色色的开源服务器介绍和理解,我们初步的去分析一个WebRTC 服务器究竟包含哪些模块,又是一个什么样的组织架构和层次关系。后面在服务器搭建后面临的丢包和多人通话问题又有什么解决方式。最后就是展望一下整个WebRTC未来发展。

2. 开源的WebRTC 服务器介绍

我们进入第一部分:WebRTC开源服务器介绍,这个模块我选择了我认为很有代表意义的3种类型的WebRTC 开源服务器

大而全的Kurento

务实主义的Licode

小而美的Mediasoup

大而全的Kurento

之所以称Kurento为大而全,是因为Kurento 强大的滤镜和计算机视觉,我们看这张图:

通过这张图我们了解到Kurento不仅仅包含了普通流媒体服务器的SFU MCU Transcoding Recording等基本功能,还包含了强大的滤镜和计算机视觉处理功能,而且,在整体的功能上不仅仅包含WebRTC 模块还有很多其他协议支持,诸如SIP RTMP RTSP 等协议,更准确的说Kurento 更像是一个融合通信平台,而且Kurento,基于插件式编程方式,很容易扩展自己的功能模块。

Kurento 在应用中有哪些问题,或者说,哪些是优势,哪些是劣势呢,我们看下面:

优势:

文档齐全无论API使用文档,还是部署文档都很齐全

功能强大,强大的路径和计算机视觉处理

模块化编程,方便扩展,这是对开发者很友好的地方

使用方便,客户端服务端都有专门的API 组件 接入系统,而且服务器端提供了J2EE node.js两种接口文档,覆盖很齐全

劣势:

代码太多太庞大,可能需要开发者有足够的功力才能驾驭这把屠龙刀

还一个重要原因就是性能比较差

小而美的Mediasoup

Mediasoup是一个很新的WebRTC服务器,专注WebRTC 的相关功能开发,专注做好这一件事,很小确很美。下面这样图是Mediasoup 大致的一个基本架构图:

Mediasoup 架构

Mediasoup

优势:

性能优秀

支持很多的WebRTC 新特性(PlanB UnifiedPlan simulcast)

同时支持ORTC和WebRTC 的互通

劣势:

功能比较少

代码和架构相对来比较晦涩一点

信令模块只提供node.js 版本

务实主义的Licode

说了两款极端的WebRTCserver ,我们最后讲一个务实主义的Licode ,为什么称Licode 为务实主义?Licode 这款服务器完全是站在一个PAAS 平台,一个业务的角度去思考问题,去构建整个系统,很务实,很实际,我们看Licode架构图:

架构很清晰:

用户端:

房间信令模块

WebRTC媒体模块

服务端:

开发者方面:

业务接入的API模块

服务器内部:

面向开发的API 服务模块,提供基本的房间和用户操作

房间服务器模块,提供基本的房间信令支持

媒体模块,完成服务端的WebRTC 媒体功能

整个服务架构内部各个服务模块通过MQ 消息总线进行数据通信,做了一个服务器要做的基本功能,同时微服务化,很符合现在服务器开发的方向。

Licode 作为WebRTC 服务器有很多优势:

功能齐全扩展方便,鉴权,存储,融合通信一应俱全

代码扩展简单,预留了足够的扩展接口

部署简单,一键脚本安装,很方便

缺点:

内部模块说明比较少

性能一般

服务端只提供的node.js 版本

总结

这么多服务器怎么选择呢?看自己的业务需求,团队能力,项目周期。

有能力的团队可以尝试选Kurento,讲求平衡快速选择Licode,追求极致Mediasoup 很符合选择。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!