传统的直播协议要么使用 adobe的基于TCP的rtmp协议,要么使用apple的基于http的hls协议
而http-flv是结合了rtmp的低延迟,以及可以复用现在的http分发资源的流媒体协议。
1.http-flv,rtmp和hls直播的优缺点
A.延迟性
http-flv:低延迟,内容延迟可以做到 2- 5 秒
RTMP:低延迟,内容延迟可以做到 2 - 5 秒
HLS:延迟较高
B.易用性
rtmp和http-flv播放端安装率高,只要浏览器支持FlashPlayer就能非常简易的播放
hls最大的优点:HTML可以直接打开播放,有浏览器即可播放
C.rtmp和http-flv比较
1.穿墙:很多防火墙会墙掉RTMP,但不会墙HTTP,因此HTTP flv出现奇怪问题概率小
2.调度:rtmp也有302,可以播放器as中支持的,flv就支持302方便cnd纠正cnd的错误
3.容错:SRS的http flv回溯时可以回多个,和rtmp一样,可以支持多级热备
4.简单:flv是最简单的流媒体封装,http是最广泛的协议,这两个组合在一起维护性更高,比RTMP简单多了
2.http-flv技术实现
http协议中有个规定:content-length字段,http的body部分的长度
服务器回复http请求的时候,如果有这个字段,客户端就接受这个长度的数据然后就认为数据传输完成了,
如果服务器回复http请求中没有这个字段,客户端就一直接受数据,直到服务器跟客户端的socket连接断开。
http-flv直播就是利用第二个原理,服务器回复客户端请求的时候不加content-length字段,在回复了http内容之后,紧接着发送flv数据,客户端就一直接受数据了。
3.flv adobe官方说明
单位说明
flv文件头和文件体(E.2),(E.3)
从整个文件上看,FLV = FLV File header = flv file body