现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

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

2019-08-29 15:53 工业·编程 ⁄ 共 6076字 ⁄ 字号 暂无评论

本文对几种开源的流媒体服务器做对比。

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

WebRTC is a free, open project that 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.

支持的浏览器和平台:

o Chrome

o Firefox

o Opera

o Android

o iOS

特点:

o 基于浏览器,且主流浏览器都支持,跨平台能力强

o 默认P2P,但是需要TURN服务器作为fallback

o 自适应码率

o webrtc 视频编码之 h264 自动调节分辨率 — newrtc

o webm - Does WebRTC support Adaptive Bitrate Streaming for video? - Stack Overflow

相关资料:

o 2013 Google I/O 大会上WebRTC的幻灯片

o Getting Started with WebRTC - Sam Dutton

o WebRTC in the real world: STUN, TURN and signaling - Sam Dutton

o IETF Real-Time Communication in WEB-browsers (rtcweb) Working Group

o RFC7742 - WebRTC Video Processing and Codec Requirements

1.4 HLS

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 开源方案选型要考虑的因素:

1. 你是否深刻理解其代码?

2. 代码版本是否足够新?

3. 有谁在使用它?

4. 它的文档是否齐全?

5. 它可以debug吗?

6. 它可以伸缩吗?

7. 它使用哪种语言?

o 对于媒体服务器而言,这种语言的性能是否足够?

o 团队是否足够了解这门语言?

8. 是否适应你现有的Signaling范式?

o 你在看的Media Server是否容易与你决定使用的STUN/TURN服务器集成

9. 许可证是否适合你?

10. 谁在提供支持?

o 很多成功的、被良好维护的开源项目背后都有一个商业模式,尤其是中小型的项目,这意味着有一个团队以此为谋生手段。

o 具备可选的付费支持意味着:

o 有人愿意全职来改善这东西,而不是作为爱好来维护。

o 如果你需要紧急帮助,只要花钱就能得到。

2.1 Red5

官网 http://red5.org/
Github https://github.com/Red5

非官方资料:

o red5-development-series

特性:

o Server

o 自动伸缩集群

o Adaptive Stream Rebuffering

o 支持多协议:

o WebRTC

o RTMP

o RTSP

o HLS

o FLV

o MP4

o 实时流录制

o 离线部署

o Browser

o 定制化HTML5播放器,支持旋转

o 实时HLS流

o 支持Flash作为后备方案

o 移动端SDK(iOS, Android)

o 自适应比特率发布

o 硬件编码和解码

o 定制视频源

o 直播摄像头切换

o 双路视频聊天

o 多方视频会议

o Adaptive Stream Rebuffering

o 低延迟播放器

o 高级通知API

o 消息与RPC

o 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)

缺点:

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

考察点总结:

考察点

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

特性:

o 支持HTTP、RTP和WebRTC

o 集成OpenCV,支持分析图像抽取信息

o 转码(这个是刚需了)

o 广播

o 提供Kurento API,可以在此基础上构建服务器的高层逻辑,并提供了Java和NodeJS的实现,基于此可以实现权限校验等业务逻辑

o 支持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/

免费版本功能受限
wps19

考察点总结:

考察点

情况

语言

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

Star1,568

Fork302

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

特性:

o 实时流发布

o 支持RTMP、RTSP、WebRTC、HLS

o WebRTC转RTMP适配器

o IP摄像头支持

o 录制实时流(FLV、MP4和HLS容器)

o 同步重制流到社交媒体(企业版里Facebook和Youtube)

o 低延迟1:N WebRTC实时流(企业版)

o 实时流自适应比特率转换(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

Star5,847

Fork5,206

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

特性:

o 实时添加字幕

o 屏幕共享

o 分组讨论室

o 录制与回放

考察点总结:

考察点

情况

语言

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

-

给我留言

留言无头像?