史上最全解析Android消息推送解决方案(android消息推送实现)
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~