流媒体协议flv

What is HTTP FLV

全部的HTTP FLV流都是一个HTTP FLV地址,譬如:http://o***s.net:8081/live/livestream.flv,可是,流的形式却至少有三种:nginx

  1. FLV文件,渐进式HTTP流。放一个文件到nginx目录,能够访问下载在播放器播放,这是HTTP FLV文件,也就是渐进式下载流。所谓渐进式下载,也就是用户观看时没法从未下载的地方开始看。服务器

  2. FLV伪流。通常说的HTTP FLV,比上面的渐进式流高级一点,譬如,一个120分钟的电影,做为渐进式流播放时,用户须要从60分钟开始看,如何支持呢?由于nginx是当作文件下载的,没法直接跳转到第60分钟(nginx也不知道60分钟对应的字节偏移是多少呀)。后来有人就支持这种跳着播放,经过指定时间服务器从指定的位置开始给流,这种支持flv?start=,就是http flv的伪流,本质上仍是点播流。ide

  3. FLV直播流。SRS所指的HTTP FLV流,是严格意义上的直播流,有RTMP的全部特征,譬如集群、低延迟、热备、GOP cache,并且有HTTP的优点,譬如30二、穿墙、通用。因为SRS内部实现了HTTP服务器,因此SRS是在边缘将RTMP流转换成HTTP流,SRS集群内部仍是使用RTMP分发。当前惟一将RTMP和HTTP协议都解析的服务器,目前只有SRS和nginx-rtmp,惋惜nginx-rtmp没有实现这个流。.net

用一句话归纳,SRS的HTTP FLV就是加强的RTMP,真正的实时流媒体分发。直播

Confuse HTTP FLV

SRS的HTTP FLV容易和下面的几种分发方式混淆:it

  1. RTMPT:这个其实是最接近SRS的HTTP FLV的概念的。可是从本质上来说,rtmpt是基于HTTP的RTMP,因此仍是RTMP而不是FLV。class

  2. HDL/HFL:国内一些厂家的HXX流,就是FLV流,主要和SRS的区别在于服务器集群内部SRS仍是走RTMP,因此延迟可能会有很大差别。SRS的HTTP FLV和RTMP延迟同样,0.8-3秒。集群

  3. HDS:这个差的太远了,不是一个东西。HDS和HLS像,可是HTTP FLV和他们两个都彻底不像。stream

Why HTTP FLV

为什么要整个HTTP FLV出来呢?当下HTTP FLV流正大行其道。主要的优点在于:互联网

  1. 互联网流媒体实时领域,仍是RTMP。HTTP-FLV和RTMP的延迟同样,所以能够知足延迟的要求。

  2. 穿墙:不少防火墙会墙掉RTMP,可是不会墙HTTP,所以HTTP FLV出现奇怪问题的几率很小。

  3. 调度:RTMP也有个302,惋惜是播放器as中支持的,HTTP FLV流就支持302方便CDN纠正DNS的错误。

  4. 容错:SRS的HTTP FLV回源时能够回多个,和RTMP同样,能够支持多级热备。

  5. 通用:Flash能够播RTMP,也能够播HTTP FLV。本身作的APP,也都能支持。主流播放器也都支持http flv的播放。

  6. 简单:FLV是最简单的流媒体封装,HTTP是最普遍的协议,这两个到一块儿维护性很高,比RTMP简单多了。

相关文章
相关标签/搜索