RTSP、 RTMP、HLS的共同点、区别

用一句简单的话总结:RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步

HLS ( HTTP Live Streaming)播放器可以直接使用http协议请求流数据,可以在不同速率的版本间自由切换,实现无缝播放;省去使用其他协议的烦恼。不适合直播,适合视频点播

RTSP (Real-Time Stream Protocol)
基于文本的多媒体播放控制协议。
RTSP定义流格式,流数据经由RTP传输;
RTSP实时效果非常好,适合视频聊天,视频监控等方向。
一般传输的是ts,mp4格式的流
RTSP传输一般需要2-3个通道,命令和数据通道分离,HTTP和RTMP一般在TCP一个通道上传输命令和数据。

RTMP(Real Time Message Protocol) 有 Adobe 公司提出,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放。
是一个专门为高效传输视频、音频和数据而设计的 TCP/IP 协议,使用 RTMP 协议传输的数据是未经加密的,包括用户名和密码等认证信息。
私有协议,未完全公开
一般传输的是flv,f4v格式流

总结:
HLS 延迟大,适合视频点播;
RTSP虽然实时性最好,但是实现复杂,适合视频聊天和视频监控;
RTMP强在浏览器支持好,加载flash插件后就能直接播放,所以非常火,相反在浏览器里播放rtsp就很困难了。

五、应用方式
推荐的方式是:
. 编码器输出RTMP协议。
. 流媒体系统接入使用RTMP协议。
. 流媒体系统内部直播分发使用RTMP。
. PC+直播+实时性要求高:使用flash播放RTMP。
. PC+直播+没有实时性要求:使用RTMP或者HLS均可。
. PC+点播:使用HTTP或者HLS。
. Apple IOS/OSX:都使用HLS(实时性要求高得自己解析RTMP,或者使用外部库,
譬如https://www.vitamio.org)
. Andorid:和IOS一样,不过可以确定的是可以自己开发支持RTMP。

二、RTMP

  1. RTMP本质上是流协议,主要的优势是:
    . 实时性高:
    在一些实时性有要求的应用中以RTMP为主。
    . 支持加密:
    RTMPE和RTMPS为加密协议。
    虽然HLS也有加密,但在PC平台上flash对RTMPE/RTMPS支持应该比较不错。
    . 稳定性高:
    在PC平台上flash播放的最稳定方式是RTMP,
    HTTP也很稳定,但HTTP是在协议上稳定;
    稳定性不只是服务端的事情,在集群分发,服务器管理,主备切换,客户端的支持上,
    RTMP在PC分发这种方式上还是很有优势。
    . 编码器接入:
    编码器输出到互联网(还可以输出为udp组播之类**应用),主要是RTMP。
    譬如专业编码器,或者flash网页编码器,或者FMLE,或者ffmpeg,或者安防摄像头,都支持RTMP输出。
    若需要接入多种设备,譬如提供云服务;
    或者希望网页直接采集摄像头;或者能在不同编码器之间切换,
    那么RTMP作为服务器的输入协议会是最好的选择。
    . 系统容错:
    容错有很多种级别,RTMP的集群实现时可以指定N上层,在错误时切换不会影响到下层或者客户端,
    另外RTMP的流没有标识,切到其他的服务器的流也可以继续播放。
    HLS的流热备切换没有这么容易。
    若对于直播的容错要求高,譬如降低出问题的概率,选择RTMP会是很好的选择。
    . 可监控:
    在监控系统或者运维系统的角度看,流协议应该比较合适监控。
    HTTP的流监控感觉没有那么完善。这个不算绝对优势,但比较有利。

  2. RTMP的劣势是:
    . 协议复杂:
    RTMP协议比起HTTP复杂很多,导致性能低下。
    测试发现两台服务器直连100Gbps网络中,HTTP能跑到60Gbps,但是RTMP只能跑到10Gbps,
    CPU占用率RTMP要高很多。
    复杂协议导致在研发,扩展,维护软件系统时都没有HTTP那么方便,所以HTTP服务器现在大行其道,
    apache/nginx/tomcat,N多HTTP服务器;
    而RTMP协议虽然早就公开,但是真正在大规模中分发表现良好的没有,
    adobe自己的FMS在CDN中都经常出问题。
    . Cache麻烦:
    流协议做缓存不方便。譬如点播,若做RTMP流协议,边缘缓存RTMP会很麻烦。
    如果是HTTP,缓存其实也很麻烦,但是HTTP服务器的缓存已经做了很久,所以只需要使用就好。
    这是为何点播都走HTTP的原因。

HTTP说的是HTTP流,譬如各大视频网站的点播流。
HTTP本质上还是文件分发,主
要的优势是:
. 性能很高:
HTTP的性能没得说,协议简单,各种HTTP高性能服务器也完善。
如果分发的量特别大,譬如点播视频网站,没有直播的实时性要求,HTTP协议是最好选择。
. 没有碎片:
HTTP比HLS没有碎片,HTTP分发大文件会比小文件分发方便很多。
特别是存储,小文件的性能超低,是个硬伤。
. 穿墙:
互联网不可能不开放HTTP协议,否则就不叫互联网。所
以任何端口封掉,也不会导致HTTP流看不了。(不过RTMP也能穿墙,用RTMPT协议)。

HTTP的劣势是:
. 实时性差:
基本上没有实时性这个说法。
. 原生支持不好:
就PC上flash对于HTTP流支持还可以,Android/IOS上似乎只能mp4,总之移动端对于HTTP的支持不是很完善。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值