流媒體通信協議
常用的流媒體協議主要有HTTP漸進下載(如HLS)和基于RTSP/RTP的實時流媒體協議,這兩種基本是完全不同的東西,還有RTMP;
相關協議有:HTTP,HLS,RTSP,RTMP;
HTTP、RTSP、RTMP、HLS區別
參考:http://www.hangge.com/blog/cache/detail_1325.html
http://blog.csdn.net/tttyd/article/details/12032357
- 共同點:
- 都是在應用層;
- 理論上都可以做直播和點播,但一般直播用RTSP/RTMP,點播用HTTP;視頻會議用RTMP;
- 區別:
- HTTP將搜有數據作為文件做處理,不是流媒體協議;RTMP和RTSP是流媒體協議;HTTP協議簡單,流媒體協議復雜;
- RTMP是Adobe的私有協議,未完全公司,RTSP/HTTP協議是共有協議,有專門機構做維護;
- RTMP是flv/f4v格式流,RTSP協議一般傳輸的是ts/mp4格式的流,HTTP沒有特定的流;
- RTSP傳輸一般需要2-3個通道,命令和數據通道分離,HTTP/RTMP一般在一個TCP通道上傳輸命令和數據;
- HLS主要延時比較大,RTMP/RTSP優勢在于延時低;
PS:可使用 FFMPEG 將RTSP協議轉換為RTMP 數據流;
HLS: HTTP Live Streaming
Apple的動態碼率自適應技術,主要用于PC和Apple終端的音視頻服務,包括一個m3u(8)索引文件,TS媒體分片文件和key加密文件;
HLS協議的小切片方式會生成大量的文件,存儲和處理這些文件會造成大量資源浪費;如果要實現數天的時移,所以努力將會是個巨額數字,明顯影響請求速度;新型系統采用了內存緩存數據實時切片技術,將TS切片文件存到內存當中,直接從服務器內存讀取,極大提高了對終端的數據請求的反應速度,優化了視頻觀看體驗;
HLS客戶端獲取到的并不是一個完整的數據流,而是連續的,短時長的媒體文件,客戶端不斷的現在并播放這些小文件;
缺點:時延比較大,不斷的http請求,協議建立過程也耗時;
優點:采用HTTP傳輸,不用考慮防火墻和代理的問題;使用分片文件來播放,客戶端可以平滑的切換碼率,以適應不同寬帶條件下的播放;iOS平臺可以獲得天然支持,采用AVPlayer就能直接播放;
PS:移動端HLS用的比較廣泛一些;
直播視頻流程:
RTSP (Real Time Streaming Protocol) 實時流協議 RFC2326
參考:
http://blog.csdn.net/leixiaohua1020/article/details/11955341
由哥倫比亞大學、網景和RealNetwork公司提交的IETF RFC標準,位于RTP和RTCP之上,使用TCP或UDP完成數據傳輸;它的語法和運作跟HTTP1.1類似,但并不特別強調時間同步,所以比較能容忍網絡延遲;允許多個串流需求控制,可以降低服務器的網絡用量,進而支持多方視訊會議;
-
開源實現
Paste_Image.png
live555 C/S C++
darwin S C++
VLC C C -
與HTTP相比
HTTP請求由客戶機發出,服務器響應;使用RTSP時,客戶機和服務器都可以發出請求,即RTSP是可以雙向的;
Paste_Image.png RTSP簡單交互過程
- 查詢服務器端可用方法 OPTION request
- 得到媒體描述信息 DESCRIBE request
- 通過可接受的傳輸選項,建立會話 SETUP request
- 請求開始傳送數據 PLAY request
- 數據傳送播放中 RTP協議傳送數據
- 會話關閉,退出
RTP協議
每一個RTP數據報都由頭部和負載兩個部分組成,其中頭部12個字節的含義是固定的,而負載則可以是音頻或視頻數據;
PS:RTSP在安防領域有廣泛應用;
RTMP (Real Time Message Protocol) 實時消息傳輸協議
主要用來在Flash/AIR平臺和支持RTMP協議的流媒體/交互服務器之間進行音視頻和數據通信;是Adobe公司自己的規范,為flash播放器和服務器之間音頻、視頻和數據傳輸開發的私有協議;
業界大部分直播業務都會選擇用RTMP作為流媒體協議,通常會將數據流封裝成FLV通過HTTP提供出去;
優點:延時小,通常為1-3s;基于TCP長連接,不需要多次建連;
缺點:iOS平臺不提供原生支持RTMP或HTTP-FLV的播放器,需要自主開發;
?- 累積延遲
RTMP是基于TCP不會丟包,但是當網絡狀態差時,服務器會將包緩存起來,導致累積的延遲,待網絡狀況好了,就一起發給客戶端;這個的對策就是,當客戶端的緩沖區很大時,就斷開重連;
PS:對實時性有一些要求的應用,以PC為主?互聯網直播領域(RTMP+CDN);
媒體封裝格式
TS/FLV/MP4
- FLV 需要flash支持
PC在線播放最常見,因為apple不支持flash,apple無法使用,很多智能機也無法使用;也支持直播; - TS HLS的媒體切片格式
Apple產品,支持動態碼率適配,支持直播; - mp4 PC/Apple/Android都支持
文件頭太大,結構復雜,長視頻的大文件頭影響加載速度的視頻體驗,所以短視頻更常見;