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

网友投稿 3083 2022-08-20

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

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

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协议有许多变种:

默认使用TCP端口1935的纯粹(plain)协议。

RTMPS ,通过一个TLS/SSL连接传输RTMP。

RTMPE ,使用Adobe自有安全机制加密的RTMP。虽然实现的细节为专有,但该机制使用行业标准的密码学原函数。

RTMPT ,用HTTP封装以穿透防火墙。RTMPT通常在TCP通信端口80和443上使用明文请求来绕过大多数的公司流量过滤。封装的会话中可能携带纯粹的RTMP、RTMPS或RTMPE数据包。

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

你是否深刻理解其代码?

代码版本是否足够新?

有谁在使用它?

它的文档是否齐全?

它可以debug吗?

它可以伸缩吗?

它使用哪种语言?

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

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

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

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

许可证是否适合你?

谁在提供支持?

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

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

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

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

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://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://restcomm.com/

GitHub https://github.com/RestComm

文档 https://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/

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何写一手漂亮的模型:面向对象编程的设计原则综述(面向对象编程五大设计原则)
下一篇:从源码看微信小程序启动过程(微信小程序运行原理)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~