流媒體傳輸協議之概述

一、流媒體的前世今生

二十一世紀以來,在互聯網浪潮的衝擊下,傳統媒體如報紙、廣播已不再能滿足人們的需求,取而代之是更有視覺衝擊感的高清視頻,甚至是具有臨場感體驗的AR/VR視頻。雖然近年來信息傳輸技術突飛猛進的發展,依然不能解決穩定、實時地傳輸高清視頻這類大容量的媒體數據。這時,流媒體技術應用而生。
流媒體最典型的應用就是網絡流媒體技術。流媒體簡單的來說就是把媒體文件流化、串行化,以達到分段分發、分段播放的目的。流媒體的概念如下:

流媒體(Streaming media)是指將一連串的媒體數據壓縮後,經過網絡分段發送數據,在網絡上即時傳輸影音以供觀賞的一種技術與過程,此技術使得數據包得以像流水一樣發送;如果不使用此技術,就必須在使用前下載整個媒體文件。
流媒體文件一般定義在bit層次結構,因此流數據包並不一定必須按照字節對齊,雖然通常的媒體文件都是按照這種字節對齊的方式打包的。流媒體的三大操作平臺是微軟公司、RealNetworks、蘋果公司提供的。
從這個定義來看,流媒體主要涉及協議部分。但在考慮到不同的網絡環境時會有不同的協議以實現不同的目標。

典型的流媒體系統分爲流媒體服務器端、分發系統和客戶端三部分

  1. 服務器主要負責音視頻文件的編碼和格式封裝;
  2. 分發系統主要負責流式文件服務及網絡包分發。這部分可能會涉及到CDN;
  3. 客戶端主要負責解碼、渲染以及音視頻同步等。客戶端需要針對不同的平臺、操作系統和運行環境而定,比較多樣化。

在這裏插入圖片描述
從系統層面來看,編碼層負責對音視頻文件編碼壓縮(h.264/h.265/VP9/AAC等);封裝層負責對數據包進行容器封裝(flv/ts等);協議層負責網絡打包(RTMP/HTTP等);傳輸層負責網絡傳輸(socket/st等);播放層負責對圖像進行解碼顯示(FLASH/VLS/VIDEO JS等)。

二、流媒體協議

類型 漸進式流媒體 實時流媒體
應用場景 點播 (VOD) 直播(LIVE)
傳輸協議 DASH HLS、RTMP、RTSP
應用層協議 HTTP RTMP、RTSP

HTTP協議

HTTP漸進式下載: 它的核心區別是媒體文件不分片,直接以完整文件形態進行分發,通過支持Seek,終端播放器可從沒下載完成部分中任意選取一個時間點開始播放。
HTTP順序流. 將媒體文件切分成片段文件,並生成索引文件。
HTTP實時流: 基於HTTP長連接。

1、RTMP協議

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

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

缺點:
1、穿透性弱。基於 TCP 傳輸,非公共端口,可能會被防火牆阻攔;
2、RTMP 因爲版權原因,很多設備不支持。

2、HTTP-FLV協議

原理:基於HTTP長連接,服務器響應http請求的時候不回覆content-length字段;這樣客戶端就會一直接受數據,從而實現了流媒體的傳輸。
優點:相比傳統的實時流協議RTMP、RTSP,具有相同的實時性。基於HTTP協議的特點,使得HTTP-FLV協議兼容性好、穿透性強。
缺點:客戶端需要flash的支持。

3、HLS協議

原理:HLS是媒體數據由服務器端切片器切割存儲爲爲連續的、時長很短(約10s)的媒體文件(MPEG 2-TS格式),同時創建.m3u8索引文件。客戶端讀取索引文件,然後按順序下載和播放.ts文件實現HLS直播流。
優點:服務器部署簡單、兼容性好、穿透性強、客戶端簡單,無需其他插件的支持。
缺點:實時性差,碎片文件過多導致性能下降。

4、DASH協議

DASH整理1
DASH整理2
Dash相關領域知識總結
Nginx服務器搭建

5、WebRTC協議

網頁即時通信。是由Google主導的一組標準、協議和JavaScript API組成,用於瀏覽器之間的音視頻數據共享。WebRTC不需要任何插件,通過簡單的JavaScript API即可實現網頁實時通信。
在這裏插入圖片描述

三、流媒體系統總結

在這裏插入圖片描述

流媒體協議概述
基於FFmpeg搭建HLS直播系統
流媒體協議之HTTP
HLS M3U8文件結構
HLS support fmp4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章