1. 程式人生 > >RTSP、RTMP、HLS

RTSP、RTMP、HLS

關鍵詞

RTSP

RTSP(Real Time Streaming Protocol),實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議。

RTMP

RTMP是Real Time Messaging Protocol(實時訊息傳輸協議)的首字母縮寫,是Adobe Systems公司為Flash播放器和伺服器之間音訊、視訊和資料傳輸 開發的開放協議。該協議基於TCP,是一個協議簇,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時資料通訊的網路協議,主要用來在Flash/AIR平臺和支援RTMP協議的流媒體/互動伺服器之間進行音視訊和資料通訊。支援該協議的軟體包括Adobe Media Server/Ultrant Media Server/red5等。

HLS

Apple的動態位元速率自適應技術。主要用於PC和Apple終端的音視訊服務。包括一個m3u(8)的索引檔案,TS媒體分片檔案和key加密串檔案。常用的流媒體協議主要有 HTTP 漸進下載和基於 RTSP/RTP 的實時流媒體協議,這二種基本是完全不同的東西,目前比較方便又好用的是用 HTTP 漸進下載方法。在這個中 apple 公司的 HTTP Live Streaming 是這個方面的代表。它最初是蘋果公司針對iPhone、iPod、iTouch和iPad等移動裝置而開發的流.現在見到在桌面也有很多應用了,HTML5 是直接支援這個。

橫向比較

HLS是蘋果提出和推薦的音視訊直播、點播的流媒體協議,它通過將媒體檔案切分成若干個TS片(比如每10秒鐘一片),並通過m3u列表檔案將這些TS片段集中起來供客戶端播放器接收。這樣做有如下幾個好處:
  • 一旦切分完成,之後的分發過程完全不需要額外的服務軟體,普通網路伺服器即可,大大降低了CDN邊緣伺服器的配置需求。
  • 分發協議通常使用常見的HTTP協議,所以代理伺服器對這個協議的緩衝優化就相當成熟。相比之下,很少代理伺服器會對RTSP協議流資料進行快取優化,這對軟體播放實時視訊就有相當大的優勢,因為這樣的分發策略,對源伺服器的負載壓力小得多。
  • 對於非實時視訊,同樣也有類似的好處,比如你要在一個長達一個小時的視訊中跳轉,如果使用單個MP4格式的視訊檔案,並且也是用HTTP協議,那麼需要代理伺服器支援HTTP rang request以獲取大檔案中的一部分,不是所有代理伺服器都對此有良好的支援。而HTTP Live Streaming則只需要根據列表檔案中的時間軸找出對應TS片即可完成次任務,不需要range request,對代理伺服器的要求小很多,所有代理伺服器都支援小檔案的高效快取。
  • 由於不需要預先載入索引檔案,大大減少了首次載入的延遲(如果MP4的媒體檔案比較長,索引檔案很大,那麼會出現很大的延遲)。
另外,HLS還有一個巨大的優勢:自適應位元速率流(adaptive streaming)。效果就是客戶端會根據網路狀況自動選擇不同位元速率的視訊流,條件允許的情況下使用高位元速率,網路繁忙的時候使用低位元速率,並且在二者間隨意切換,這個對移動裝置網路狀況不穩定的情況下保證流暢播放非常有幫助。實現方法就是伺服器提供多位元速率視訊流,並且在列表檔案中註明,播放器會根據播放進度和下載速度自動調整。        至於為什麼要用TS而不是MP4,這是因為TS片段可以無縫拼接,播放器能連續播放,而MP4檔案由於編碼方式的原因,兩段MP4不能無縫拼接,播放器連續播放兩個MP4檔案會出現破音和換面間斷,影響使用者體驗。況且MP4不是流媒體檔案,必須有索引才能任意seek。同樣的flv格式檔案也是流式檔案,並且比其它格式都簡單,但是蘋果不支援,如此各家都只好去實現MPEG-TS。 IOS裝置上啟用HTTP live Streaming非常簡單,也是蘋果官方推薦的方式。Adobe的Flash流媒體伺服器的新版本也要支援這個技術,這是Adobe對蘋果的妥協吧。