一、Kurento
Github 地址:
https://github.com/Kurento/kurento-media-server
Github Star:
1.4k
基本介绍:
Kurento是一个WebRTC媒体服务器,并且包含一个客户端API集合,用以简化WWW和移动平台上的高级视频应用程序的开发。Kurento的功能包括组通信,转码,记录,混音,广播和路由。Kurento同样提供高级的媒体处理能力,包括计算机视觉,视频检索,虚拟现实和语音分析。Kurento模块化的架构使得其集成第三方媒体处理算法(如语音识别,场景分析,人脸识别等)很简单,而且它可以被应用程序开发者视为透明。Kurento的核心组成是Kurento媒体服务器,它用来负责媒体传输,处理,加载和记录。
优点:
文档全面,功能种类多,模块化编程,方便拓展,提供android和ios端demo(2016年)。
缺点:
性能一般,不是很稳定,框架比较重,修改源码比较困难,开发周期长。
二、Licode
Github 地址:
https://github.com/lynckia/licode
Github Star:
2.1k
基本介绍:
Licode是基于webRTC技术之上的开源项目,通过更便捷(easy,fast and scalable)的接口可以快速搭建出基于webRTC技术的网络视频会议系统,或者与此类似的系统。
优点:
接口简洁,服务轻量级,安装部署方便,对HTML5支持较好,有android和ios端demo(2017年)
缺点:
API文档比较简单且其他文档较少,支持分布式部署,只支持 Ubuntu 14.04 LTS 这个 Linux 版本。
三、Jitsi
Github 地址:
https://github.com/jitsi/jitsi
Github Star:
2k
基本介绍:
Jitsi不仅仅是一个WebRTC媒体服务器,而是围绕者webrtc构建了一整个平台。 Jitsi系列产品包括Jitsi Videobridge(媒体中继,SFU),Jitsi Meet(会议web客户端),Jicofo(Jitsi Conference Focus),Jigasi(Jitsi Gateway to SIP)和Jitsi SIP Phone。 Jitsi平台最吸引人的特性是它包含了在数小时内启动和运行的通信平台的所有功能。它还使用Jingle(XMPP)和功能齐全的Web interface实现了自己的信令。遗憾的是,它没有一个稳固易用的媒体录制功能实现。Jitsi 是一个开源项目,可帮开发者在 Web 、Windows、Linux、Mac OS X、Android 平台上实现实时的语音、视频通话应用。有很多独立开发者在基于这套代码开发自己的视频通话应用。
优点:
功能稳定,提供移动端demo(2016年)
缺点:
只支持SFU,信令协议只支持SIP/XMPP,没有媒体录制功能。
四、Janus
Github 地址:
https://github.com/meetecho/janus-gateway
Github Star:
3k
基本介绍:
JanusJanus是一个开源的,通过 C 语言实现了对 WebRTC 支持的 Gateway;Janus 自身实现得很简单,提供插件机制来支持不同的业务逻辑,配合官方自带插件就可以用来实现高效的 Media Server 服务janus是Meetecho开发的一个WebRTC网关,janus的主要作用就是它可以和你的内网设备和浏览器同时建立连接,并将浏览器发来的音视频数据包如rtp/rtcp包,通过自定义插件转发给你的内网设备,也可以将你发给janus的音视频数据包,加密后转发给浏览器。尽管在它的描述中没有任何地方提到“媒体服务器”,但是Janus可以很容易地就被设置为一个SFU。其最显著的特点之一是它的插件架构,可以增强服务的核心功能。
优点:
插件化架构,易于拓展,稳定,cpu和内存利用率高,轻量级
缺点:
房间逻辑设计不灵活。
五、Mediasoup
Github 地址:
https://github.com/versatica/mediasoup
Github Star:
940
基本介绍:
一个相对较新且有趣的媒体服务器,它与其他媒体服务器的不同之处在于它被设计为一个Library(用于Node),允许它集成到更大的应用程序中。
优点:
轻量级,性能好
缺点:
比较新,不太稳定,目前只支持h264和vp8,只支持SFU
六、总结和建议
表格中所列出的开源系统是目前市面上比较常见的,分别从服务器类型、编解码能力、文档的完整性和开发商来进行对比。
- 首先介绍的开源系统是Kurento,这个开源系统是在表格所列出中最全能的一个开源系统。这个开源系统支持转码,同时还有滤镜的附加功能。但是在测试过程中,这个开源系统的稳定性不是很好。这个开源系统同时提供了一个云服务方案,主要是开发商为了推广云服务而开源的系统,所以性能的稳定性还有待提高。
- Janus的出发点是网关,它的开发商是Meetecho公司,Slack推出的视频通话方案就是基于这个开源系统的。但在测试过程中发现,这个开源系统在性能上有些问题, 而Slack也是对其进行了大量的优化。
- Jitsi只是实现了SFU模型,不包含MCU,由于功能单一,只是一个转化路由,所以这个系统是列表中是较为稳定的一个开源系统。如果只是需要实现简单的转发功能,这个开源系统是不错的选择。
- Licode具有SFU和MCU功能,它的架构是插件式的,也就是说,如果你想在自己的源代码上附加某些功能,可以直接使用Licode对自己的系统进行补充,既能保留原有系统的特性,又能达到完善功能的目的。
- Intel使用Licode实现了一个Intel CS for WebRTC的套件,它是免费的,有提供Client端和Server端的SDK,但是这个系统不开源。我们在一些沙龙活动中会经常看到有关这个系统的介绍,基于这个系统配合使用Intel方案也是不错的选择。这个系统也是列表中唯一支持RTMP转协议的系统。
- 最后一个开源系统是MediaSoup,这个系统只支持SFU,底层的开发语言是Node.js。对于熟悉Node.js语言的开发人员来说,这个开源系统比较容易学习。但是由于这个开源系统出现的时间不长,系统稳定性还有待提高。
七、webrtc服务器压测报告
链接:
https://download.csdn.net/download/Martin_chen2/12284625