【流媒体】rtmphls 协议 梳理、比较

hls是Apple平台的标准流媒体协议,苹果官方的解释:( here)
HTTP Livelets you send audio and video over HTTP from anwebforon iOS-based — , iPad, iPod touch, and Apple TV—and on(Mac OS X). HTTP Liveboth liveand(video on ). HTTP Liveatbit rates, and thecanas. HTTP Livealsofor mediaand userover HTTPS,totheir work.
三、对比
1.RTMP VS TCP&UDP
TCP为点对点的协议,这意味着各个客户需要分开客户机/服务器链接,因而无法在网络级实现对多个客户机的数据广播 。如果有一个数据流必须同时被传送到多个客户机,服务器必须传送数据流的副本到各个客户机,TCP能够根据网络带宽和拥挤程度动态地调节传送速度并重新发送丢失的数据包,这样虽然保证了数据传输的可靠性,但是对服务器资源耗费较大,在数据流大的场合难以保证数据流传输的实时性 。
UDP为不可靠传输协议,在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度,计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段 。UDP协议不需要维护连接状态,也不认为每个数据包都必须到达接受端,因此网络负荷比TCP小,传输速度也要比TCP快;但在网络越拥挤时,越有更多的数据包丢失 。
RTMP协议是一个专门为高效传输视频,音频和数据而设计的协议 。它通过建立一个二进制TCP连接或者连接HTTP隧道实现实时的视频和声音传输 。共享对象是RTMP数据中一种比较重要的数据类型,任何客户端改变数据时,共享对象能够及时更新服务器端的数据,这样,每个客户端都能够及时了解到数据的变化 。

【流媒体】rtmphls 协议 梳理、比较

文章插图
RTMP比传统媒介服务器流出的媒介协议支持更多 。它支持可能包含声音,影像和脚本数据从服务器到客户和从客户到服务器多条线路的动态传输 。RTMP对声音、影像和脚本数据分别处理 。声音和视频数据被分开地缓冲在服务器中 。如果声音数据在声音缓冲器中达到某一极限,所有在缓冲器中的数据将被丢掉,并且最近到达的数据被允许开始收集在缓冲中并被送到各个客户 。视频数据被以相似的方式处理,不同是当新的关键帧到达时,缓冲器中数据才被清除 。在丢掉旧的帧数据时,如果发现客户端的数据有误,则将新旧两个不同的帧进行拟合 。
RTMP对数据给予不同的优先级别 。在实时交谈中,声音是最重要的,影像给予低优先级,而脚本数据被给予的优先权介于声音和影像中间 。
2."RTMP" VS "HLS"
【【流媒体】rtmphls 协议 梳理、比较】rtmp
优势:
1.实时性高:RTMP的实时性在3秒之内,经过多层CDN节点分发后,实时性也在3秒左右 。在一些实时性有要求的应用中以RTMP为主 。
2.支持加密:RTMPE和RTMPS为加密协议 。虽然HLS也有加密,但在PC平台上flash对RTMPE/RTMPS支持应该比较不错 。
3.稳定性高:在PC平台上flash播放的最稳定方式是RTMP,如果做CDN或者大中型集群分发,选择稳定性高的协议一定是必要的 。HTTP也很稳定,但HTTP是在协议上稳定;稳定性不只是服务端的事情,在集群分发,服务器管理,主备切换,客户端的支持上,RTMP在PC分发这种方式上还是很有优势 。
4.编码器接入:编码器输出到互联网(还可以输出为udp组播之类广电应用),主要是RTMP 。譬如专业编码器,或者flash网页编码器,或者FMLE,或者,或者安防摄像头,都支持RTMP输出 。若需要接入多种设备,譬如提供云服务;或者希望网页直接采集摄像头;或者能在不同编码器之间切换,那么RTMP作为服务器的输入协议会是最好的选择 。