流媒體協議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簡單多了。

相關文章
相關標籤/搜索