流媒体协议(三):FLV协议
What is HTTP FLV
FLV⽂件,渐进式HTTP流。
放⼀个⽂件到nginx⽬录,可以访问下载在播放器播放,这是HTTP FLV⽂件,也就是渐进式下载流。所谓渐进式下载,也就是⽤户观看时⽆法从未下载的地⽅开始看。 FLV伪流。
⼀般说的HTTP FLV,⽐上⾯的渐进式流⾼级⼀点,譬如,⼀个120分钟的电影,作为渐进式流播放时,⽤户需要从60分钟开始看,如何⽀持呢?因为nginx是当做⽂件下载的,⽆法直接跳转到第60分钟(nginx也不知道60分钟对应的字节偏移是多少呀)。后来有⼈就⽀持这种跳着播放,通过指定时间服务器从指定的位置开始给流,这种⽀持flv?start=,就是http flv的伪流,本质上还是点播流。 生产HFLV直播流。
SRS所指的HTTP FLV流,是严格意义上的直播流,有RTMP的所有特征,譬如集、低延迟、热备、GOP cache,⽽且有HTTP的优势,譬如302、穿墙、通⽤。由于SRS内部实现了HTTP服务器,所以SR
S是在边缘将RTMP流转换成HTTP流,SRS集内部还是使⽤RTMP分发。当前唯⼀将RTMP和HTTP协议都解析的服务器,⽬前只有SRS和nginx-rtmp,可惜nginx-rtmp没有实现这个流。
含盐废水处理
⽤⼀句话概括,SRS的HTTP FLV就是增强的RTMP,真正的实时流媒体分发。
Confuse HTTP FLV
SRS的HTTP FLV容易和下⾯的⼏种分发⽅式混淆:
RTMPT:这个实际上是最接近SRS的HTTP FLV的概念的。但是从本质上来讲,rtmpt是基于HTTP的RTMP,所以还是RTMP⽽不是FLV。
HDL/HFL:国内⼀些⼚家的HXX流,就是FLV流,主要和SRS的区别在于服务器集内部SRS还是⾛RTMP,所以延迟可能会有很⼤差异。SRS的HTTP FLV和RTMP延迟⼀样,0.8-3秒。
HDS:这个差的太远了,不是⼀个东西。HDS和HLS像,但是HTTP FLV和他们两个都完全不像。
Why HTTP FLV
卷盘
为何要整个HTTP FLV出来呢?当下HTTP FLV流正⼤⾏其道。主要的优势在于:
互联⽹流媒体实时领域,还是RTMP。HTTP-FLV和RTMP的延迟⼀样,因此可以满⾜延迟的要求。
穿墙:很多防⽕墙会墙掉RTMP,但是不会墙HTTP,因此HTTP FLV出现奇怪问题的概率很⼩。
调度:RTMP也有个302,可惜是播放器as中⽀持的,HTTP FLV流就⽀持302⽅便CDN纠正DNS的错误。
容错:SRS的HTTP FLV回源时可以回多个,和RTMP⼀样,可以⽀持多级热备。
通⽤:Flash可以播RTMP,也可以播HTTP FLV。⾃⼰做的APP,也都能⽀持。主流播放器也都⽀持http flv的播放。
简单:FLV是最简单的流媒体封装,HTTP是最⼴泛的协议,这两个到⼀起维护性很⾼,⽐RTMP简单多了。
湿度传感器芯片
FLV(Flash Video)由于其视频⽂件体积轻巧、封装简单等特点,使其很适合在互联⽹上进⾏应⽤。此外,FLV可以使⽤Flash Player进⾏播放,⽽Flash Player插件已经安装在全世界绝⼤部分浏览器上,这使得通过⽹页播放FLV视频⼗分容易。⽬前主流的视频⽹站如优酷⽹,⼟⾖⽹,乐视⽹等⽹站⽆⼀例外地使⽤了FLV格式。FLV封装格式的⽂件后缀通常为“.flv”。
基因测序仪总体上看,FLV包括⽂件头(File Header)和⽂件体(File Body)两部分,其中⽂件体由⼀系列的Tag组成。因此⼀个FLV⽂件是如下图结构。
出生医学证明管理系统其中,每个Tag前⾯还包含了Previous Tag Size字段,表⽰前⾯⼀个Tag的⼤⼩。Tag的类型可以是视频、⾳频和Script,每个Tag只能包含以上三种类型的数据中的⼀种。下图展⽰了FLV⽂件的详细结构。