几种开源的媒体服务器对比

2018-07-20    来源:编程学习网

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

1 概念

1.1 RTP

实时传输协议 - 维基百科,自由的百科全书

实时传输协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。

RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTSP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是创建在 UDP 协议上的。

1.2 RTMP

实时消息协议 - 维基百科,自由的百科全书

实时消息协议(英语:Real-Time Messaging Protocol,缩写RTMP)也称实时消息传输协议,是最初由Macromedia为通过互联网在Flash播放器与一个服务器之间传输流媒体音频、视频和数据而开发的一个专有协议。Macromedia后被Adobe Systems收购,该协议也已发布了不完整的规范供公众使用。

RTMP协议有许多变种:

  1. 默认使用TCP端口1935的纯粹(plain)协议。
  2. RTMPS ,通过一个TLS/SSL连接传输RTMP。
  3. RTMPE ,使用Adobe自有安全机制加密的RTMP。虽然实现的细节为专有,但该机制使用行业标准的密码学原函数。
  4. RTMPT ,用HTTP封装以穿透防火墙。RTMPT通常在TCP通信端口80和443上使用明文请求来绕过大多数的公司流量过滤。封装的会话中可能携带纯粹的RTMP、RTMPS或RTMPE数据包。
  5. RTMFP , 使用UDP而非TCP的RTMP,取代RTMP Chunk Stream。Adobe Systems开发了安全的实时媒体流协议包,可以让最终用户直接地相互连接(P2P)。

1.3 WebRTC

https://webrtc.org/

WebRTC is a free, open projectthat provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.

Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.

The WebRTC initiative is a project supported by Google , Mozilla and Opera , amongst others.

支持的浏览器和平台:

  • Chrome
  • Firefox
  • Opera
  • Android
  • iOS

特点:

  • 基于浏览器,且主流浏览器都支持,跨平台能力强
  • 默认P2P,但是需要TURN服务器作为fallback
  • 自适应码率
    • webrtc 视频编码之 h264 自动调节分辨率 — newrtc
    • webm - Does WebRTC support Adaptive Bitrate Streaming for video? - Stack Overflow

相关资料:

  • 2013 Google I/O 大会上WebRTC的幻灯片
  • Getting Started with WebRTC - Sam Dutton
  • WebRTC in the real world: STUN, TURN and signaling - Sam Dutton
  • IETF Real-Time Communication in WEB-browsers (rtcweb) Working Group
  • RFC7742 - WebRTC Video Processing and Codec Requirements

1.4 HLS

HTTP Live Streaming - 维基百科,自由的百科全书

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。

HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络(CDN)来传输媒体流。

2017年8月, RFC 8216 发布,描述了HLS协议第7版的定义

RFC 8216

2 开源方案

2.0 开源方案选型要考虑的因素:

10 Tips for Choosing the Right WebRTC Open Source Media Server Framework

  1. 你是否深刻理解其代码?
  2. 代码版本是否足够新?
  3. 有谁在使用它?
  4. 它的文档是否齐全?
  5. 它可以debug吗?
  6. 它可以伸缩吗?
  7. 它使用哪种语言?
    • 对于媒体服务器而言,这种语言的性能是否足够?
    • 团队是否足够了解这门语言?
  8. 是否适应你现有的Signaling范式?
    • 你在看的Media Server是否容易与你决定使用的STUN/TURN服务器集成
  9. 许可证是否适合你?
  10. 谁在提供支持?
    • 很多成功的、被良好维护的开源项目背后都有一个商业模式,尤其是中小型的项目,这意味着有一个团队以此为谋生手段。
    • 具备可选的付费支持意味着:
      • 有人愿意全职来改善这东西,而不是作为爱好来维护。
      • 如果你需要紧急帮助,只要花钱就能得到。

2.1 Red5

官网 http://red5.org/

Github https://github.com/Red5

非官方资料:

  • red5-development-series

特性:

  • Server
    • 自动伸缩集群
    • Adaptive Stream Rebuffering
    • 支持多协议:
      • WebRTC
      • RTMP
      • RTSP
      • HLS
      • FLV
      • MP4
    • 实时流录制
    • 离线部署
  • Browser
    • 定制化HTML5播放器,支持旋转
    • 实时HLS流
    • 支持Flash作为后备方案
  • 移动端SDK(iOS, Android)
    • 自适应比特率发布
    • 硬件编码和解码
    • 定制视频源
    • 直播摄像头切换
    • 双路视频聊天
    • 多方视频会议
    • Adaptive Stream Rebuffering
    • 低延迟播放器
    • 高级通知API
    • 消息与RPC
    • HD h.264, AAC编码高达4k

粗略的特性收费情况调查结果:

- 开源版本 付费版本
自动伸缩集群 不支持 \$279/MO
多协议支持 支持 支持
转码 不支持 \$109/MO
离线部署 支持 \$999+/MO

来自 Red5 open source vs Red5pro · rajdeeprath/red5-development-series Wiki 的数据

FEATURES RED5 OS RED5 PRO
实时流 ? ?
视频录制 ? ?
WebSockets ? ?
移动端回放(HLS) Community ?
Adobe Flash 支持 ? ?
WebRTC ? ?
第二屏 ? ?
自动伸缩 ? ?
集群 ? ?
移动端SDK ? ?
扩展文档 ? ?
客户支持 Community ?
管理API (RESTful) ? ?

缺点:

  • 开源版本很难用,官方几乎没有文档,即使有,也是几年前的了,也没有教程。

考察点总结:

考察点 OS PRO
语言 Java Java
最新发布日期 2017-01-12 ?
谁在用 ? Intel, LimeLight,…,etc(最经典的方案)
文档 ? ?
伸缩 ? ?
debug ? ?
许可证 Apache License v2 付费
网络协议 HLS, WebSockets, RTSP, RTMP, RTMPT, RTMPS, RTMPE HLS, WebSockets, RTSP, RTMP, RTMPT, RTMPS, RTMPE, WebRTC
自适应码率 ? ?
流控 ? ?
录制 ? ?
回放 ? ?

2.2 kurento

主页: http://www.kurento.org/

github: https://github.com/kurento

服务端采用C++实现: https://github.com/Kurento/kurento-media-server

特性:

  • 支持HTTP、RTP和WebRTC
  • 集成OpenCV,支持分析图像抽取信息
  • 转码(这个是刚需了)
  • 广播
  • 提供Kurento API,可以在此基础上构建服务器的高层逻辑,并提供了Java和NodeJS的实现,基于此可以实现权限校验等业务逻辑
  • 支持NAT穿越

文档地址: http://readthedocs.org/projects/doc-kurento/downloads/pdf/stable/

考察点总结:

考察点 情况
语言 C++
最新发布日期 2018-03-21
谁在用 没有业界权威在用,Github 800+Star
文档 比较全
伸缩 ?
debug
许可证 LGPL v2.1
网络协议 HTTP, RTP, WebRTC
自适应码率 ?
流控 ?
录制 ?
回放 ?

2.3 RestComm

官网 https://www.restcomm.com/

GitHub https://github.com/RestComm

文档 https://www.restcomm.com/docs/

免费版本功能受限

考察点总结:

考察点 情况
语言 Java
最新发布日期 2018-04-20
谁在用 ?
文档 齐全
伸缩 付费
debug
许可证 AGPL-3.0
网络协议 WebRTC
自适应码率 ?
流控 ?
录制 ?
回放 ?

2.4 Ant Media Server

官网 https://antmedia.io/

文档 https://antmedia.io/documentation

Github https://github.com/ant-media/ant-media-server

Star Fork

服务端采用Java实现,是Red5-server的分叉版本

特性:

  • 实时流发布
  • 支持RTMP、RTSP、WebRTC、HLS
  • WebRTC转RTMP适配器
  • IP摄像头支持
  • 录制实时流(FLV、MP4和HLS容器)
  • 同步重制流到社交媒体(企业版里Facebook和Youtube)
  • 低延迟1:N WebRTC实时流(企业版)
  • 实时流自适应比特率转换(FLV、MP4、HLS)(企业版)

考察点总结:

考察点 情况
语言 Java
最新发布日期 2018-05-01
谁在用  
文档 齐全
伸缩 收费
debug ?
许可证 Apache License v2
网络协议 RTMP、RTSP、WebRTC、HLS
自适应码率 ?
流控 ?
录制 ?
回放 ?

2.5 BigBlueButton

官网 https://bigbluebutton.org/

文档 http://docs.bigbluebutton.org/

github https://github.com/bigbluebutton/bigbluebutton

Star Fork

采用Java开发,主要针对场景是授课

特性:

  • 实时添加字幕
  • 屏幕共享
  • 分组讨论室
  • 录制与回放

考察点总结:

考察点 情况
语言 Java
最新发布日期  
谁在用  
文档  
伸缩  
debug  
许可证  
网络协议  
自适应码率  
流控  
录制  
回放

2.6 NextRTC

主页 https://nextrtc.org/

Github https://github.com/mslosarz/nextrtc-signaling-server

考察点总结:

考察点 情况
语言 Java
最新发布日期 2018-04-05
谁在用 (估计没人)
文档 简单
伸缩 ?
debug ?
许可证 MIT
网络协议 WebRTC
自适应码率 ?
流控 ?
录制 ?
回放 ?

2.7 OpenBroadcaster

https://obsproject.com/

https://github.com/obsproject

TBD

Comparison of streaming media systems - Wikipedia

名称 创建者 最新稳定版(发布日期) 最新发布日期 价钱 (USD) 许可证 支持媒体
Cameleon Yatko 1.0.7 (2016-11-11) 2016-11-11 Free 专有 Audio/Video
Helix Universal Server RealNetworks 15.2.1 (2014-09-16) 2014-09-16 Free for 12 months (Basic) and \$1,000-\$10,000 专有 Audio/Video
IIS Media Services Microsoft 4.1 (2011-11-09) 2011-11-09 Free 专有 Audio/Video/Data
Nimble Streamer WMSPanel 2.15.1-3 (2016-03-21) 2016-03-21 Free 专有 Audio/Video
Open Broadcaster Software OBS Project 0.657 (2015-11-24) 2015-11-24 Free GPL v2 Audio/Video
OpenBroadcaster OpenBroadcaster 5.0.0 (2018-01-27) 2018-01-27 Free AGPLv3 Audio/Video
Plex (software) Plex Media Server 1.0.3.2461-35f0caa (2016-07-28) 2016-07-28 Free GPL Audio/Video
Red5 (open source) Infrared5/community 1.0.6 (2015-09-08) 2015-09-08 Free Apache License v2 Audio/Video/Data
Unified Streaming Platform Unified Streaming 1.7.18 (2016-04-11) 2016-04-11 Free Trial license; Perpetual License; Amazon EC2 with embedded license; Microsoft Azure 专有 Audio/Video
Unreal Media Server Unreal Streaming Technologies 12.0 (2017-04-03) 2017-04-03 \$995 perpetual license 专有 Audio/Video
VLC media player VideoLAN 2.2.4 (2016-06-05) 2016-06-05 Free GPL v2 Audio/Video
Wowza Streaming Engine Wowza Media Systems 4.5.0 build 18676 (2016-06-23)[2] 2016-06-23 Free Developer and Trial licenses; Subscription Licenses at \$65/month; Perpetual Pro License at \$1995; Amazon EC2 with embedded license starting at \$0.15/hour 专有 Audio/Video/Data

-

 

来自:http://bungder.github.io/2018/05/06/compare-of-some-open-source-media-server/

 

标签: Google ssl ssl连接 安全 代理服务器 代码 防火墙 服务器 互联网 媒体 权限 通信 网络

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:如何写一手漂亮的模型:面向对象编程的设计原则综述

下一篇:从源码看微信小程序启动过程