[轉]RTMP、HTTP-FLV、HLS,你了解常見的三大直播協議嗎


隨着直播行業大火,游戲、樂秀、教育、發布會等直播類產品層出不窮,能夠滿足各方人員的需求。在直播中,總能在其中找到適合自己的產品內容。喜歡玩游戲的可以看游戲直播,想學點工作技能的,也可以觀看大牛現場授課,甚至你能通過直播跟各大主播實時互動。看了這么多直播,你好像發現了一個小秘密,不同類型的直播延時有所不同,像與主播實時互動的一般延遲比較短,而相對的,在線教育這一類就比較長了。這就是我今天想給大家講解的一些東西,除了網絡環境以外,對延時影響較大的就是直播架構中選擇的直播協議。接下來,我就給大家簡單介紹下常見的直播協議吧。

常見的直播協議

國內常見的直播協議有幾個:RTMP、HLS、HTTP-FLV,下面我們來一一介紹。

RTMP,全稱 Real Time Messaging Protocol,即實時消息傳送協議。Adobe 公司為 Flash 播放器和服務器之間音視頻數據傳輸開發的私有協議。工作在 TCP 之上的明文協議,默認使用端口 1935。協議中的基本數據單元成為消息(Message),傳輸的過程中消息會被拆分為更小的消息塊(Chunk)單元。最后將分割后的消息塊通過 TCP 協議傳輸,接收端再反解接收的消息塊恢復成流媒體數據。

RTMP 主要有以下幾個優點:RTMP 是專為流媒體開發的協議,對底層的優化比其它協議更加優秀,同時它 Adobe Flash 支持好,基本上所有的編碼器(攝像頭之類)都支持 RTMP 輸出。現在 PC 市場巨大,PC 主要是 Windows,Windows 的瀏覽器基本上都支持 Flash。另外RTMP適合長時間播放,曾經有過測試,聯系 100 萬秒,即 10 天多連續播放沒有出現問題。最后 RTMP 的延遲相對較低,一般延時在 1-3s 之間,一般的視頻會議,互動式直播,完全是夠用的。

當然 RTMP 並沒有盡善盡美,它也有不足的地方。一方面是它是基於 TCP 傳輸,非公共端口,可能會被防火牆阻攔;另一方面,也是比較坑的一方面是 RTMP 為 Adobe 私有協議,很多設備無法播放,特別是在 iOS 端,需要使用第三方解碼器才能播放。

FLV (Flash Video) 是 Adobe 公司推出的另一種視頻格式,是一種在網絡上傳輸的流媒體數據存儲容器格式。其格式相對簡單輕量,不需要很大的媒體頭部信息。整個 FLV 由 The FLV Header, The FLV Body 以及其它 Tag 組成。因此加載速度極快。采用 FLV 格式封裝的文件后綴為 .flv。

而我們所說的 HTTP-FLV 即將流媒體數據封裝成 FLV 格式,然后通過 HTTP 協議傳輸給客戶端。

HTTP-FLV 依靠 MIME 的特性,根據協議中的 Content-Type 來選擇相應的程序去處理相應的內容,使得流媒體可以通過 HTTP 傳輸。相較於 RTMP 協議,HTTP-FLV 能夠好的穿透防火牆,它是基於 HTTP/80 傳輸,有效避免被防火牆攔截。除此之外,它可以通過 HTTP 302 跳轉靈活調度/負載均衡,支持使用 HTTPS 加密傳輸,也能夠兼容支持 Android,iOS 的移動端。

說了這么多優點,也來順便說下 HTTP-FLV 的缺點,由於它的傳輸特性,會讓流媒體資源緩存在本地客戶端,在保密性方面不夠好。因為網絡流量較大,它也不適合做拉流協議。

上述兩個協議都是有Adobe公司推出的,而下面要講的 HLS (HTTP Live Streaming) 則是蘋果公司基於 HTTP 的流媒體傳輸協議。主要應用於 iOS 設備,包含(iPhone, iPad, iPod touch) 以及 Mac OSX 提供音視頻直播服務和錄制內容(點播)等服務。

相對於常見的流媒體協議,HLS 最大的不同在於它並不是一下請求完整的數據流。它會在服務器端將流媒體數據切割成連續的時長較短的 ts 小文件,並通過 M3U8 索引文件按序訪問 ts 文件。客戶端只要不停的按序播放從服務器獲取到的文件,從而實現播放音視頻。

相較 RTMP 而言,使用 HLS 在 HTML5 頁面上實現播放非常簡單:

直接:

或者:

HLS 的優勢:

  • Apple 的全系列產品支持:由於 HLS 是蘋果提出的,所以在 Apple 的全系列產品包括 iPhone、 iPad、safari 都不需要安裝任何插件就可以原生支持播放 HLS, 現在 Android 也加入了對 HLS 的支持。

  • 穿透防火牆。基於 HTTP/80 傳輸,有效避免防火牆攔截

  • 性能高。通過 HTTP 傳輸, 支持網絡分發,CDN 支持良好,且自帶多碼率自適應,Apple 在提出 HLS 時,就已經考慮了碼流自適應的問題。

HLS 的劣勢:

  • 實時性差,延遲高。HLS 的延遲基本在 10s+ 以上

  • 文件碎片。特性的雙刃劍,ts 切片較小,會造成海量小文件,對存儲和緩存都有一定的挑戰

 

 

原文:https://www.upyun.com/tech/article/352/RTMP%E3%80%81HTTP-FLV%E3%80%81HLS%EF%BC%8C%E4%BD%A0%E4%BA%86%E8%A7%A3%E5%B8%B8%E8%A7%81%E7%9A%84%E4%B8%89%E5%A4%A7%E7%9B%B4%E6%92%AD%E5%8D%8F%E8%AE%AE%E5%90%97.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM