流媒體播放協(xié)議

流媒體通信協(xié)議

常用的流媒體協(xié)議主要有HTTP漸進(jìn)下載(如HLS)和基于RTSP/RTP的實(shí)時流媒體協(xié)議,這兩種基本是完全不同的東西,還有RTMP;
相關(guān)協(xié)議有:HTTP,HLS,RTSP,RTMP;

HTTP、RTSP、RTMP、HLS區(qū)別

參考:http://www.hangge.com/blog/cache/detail_1325.html
http://blog.csdn.net/tttyd/article/details/12032357

  • 共同點(diǎn):
  1. 都是在應(yīng)用層;
  2. 理論上都可以做直播和點(diǎn)播,但一般直播用RTSP/RTMP,點(diǎn)播用HTTP;視頻會議用RTMP;
  • 區(qū)別:
  1. HTTP將搜有數(shù)據(jù)作為文件做處理,不是流媒體協(xié)議;RTMP和RTSP是流媒體協(xié)議;HTTP協(xié)議簡單,流媒體協(xié)議復(fù)雜;
  2. RTMP是Adobe的私有協(xié)議,未完全公司,RTSP/HTTP協(xié)議是共有協(xié)議,有專門機(jī)構(gòu)做維護(hù);
  3. RTMP是flv/f4v格式流,RTSP協(xié)議一般傳輸?shù)氖莟s/mp4格式的流,HTTP沒有特定的流;
  4. RTSP傳輸一般需要2-3個通道,命令和數(shù)據(jù)通道分離,HTTP/RTMP一般在一個TCP通道上傳輸命令和數(shù)據(jù);
  5. HLS主要延時比較大,RTMP/RTSP優(yōu)勢在于延時低;

PS:可使用 FFMPEG 將RTSP協(xié)議轉(zhuǎn)換為RTMP 數(shù)據(jù)流;

HLS: HTTP Live Streaming

Apple的動態(tài)碼率自適應(yīng)技術(shù),主要用于PC和Apple終端的音視頻服務(wù),包括一個m3u(8)索引文件,TS媒體分片文件和key加密文件;
HLS協(xié)議的小切片方式會生成大量的文件,存儲和處理這些文件會造成大量資源浪費(fèi);如果要實(shí)現(xiàn)數(shù)天的時移,所以努力將會是個巨額數(shù)字,明顯影響請求速度;新型系統(tǒng)采用了內(nèi)存緩存數(shù)據(jù)實(shí)時切片技術(shù),將TS切片文件存到內(nèi)存當(dāng)中,直接從服務(wù)器內(nèi)存讀取,極大提高了對終端的數(shù)據(jù)請求的反應(yīng)速度,優(yōu)化了視頻觀看體驗(yàn);
HLS客戶端獲取到的并不是一個完整的數(shù)據(jù)流,而是連續(xù)的,短時長的媒體文件,客戶端不斷的現(xiàn)在并播放這些小文件;
缺點(diǎn):時延比較大,不斷的http請求,協(xié)議建立過程也耗時;
優(yōu)點(diǎn):采用HTTP傳輸,不用考慮防火墻和代理的問題;使用分片文件來播放,客戶端可以平滑的切換碼率,以適應(yīng)不同寬帶條件下的播放;iOS平臺可以獲得天然支持,采用AVPlayer就能直接播放;
PS:移動端HLS用的比較廣泛一些;

直播視頻流程:


Paste_Image.png
Paste_Image.png

RTSP (Real Time Streaming Protocol) 實(shí)時流協(xié)議 RFC2326

參考:
http://blog.csdn.net/leixiaohua1020/article/details/11955341
由哥倫比亞大學(xué)、網(wǎng)景和RealNetwork公司提交的IETF RFC標(biāo)準(zhǔn),位于RTP和RTCP之上,使用TCP或UDP完成數(shù)據(jù)傳輸;它的語法和運(yùn)作跟HTTP1.1類似,但并不特別強(qiáng)調(diào)時間同步,所以比較能容忍網(wǎng)絡(luò)延遲;允許多個串流需求控制,可以降低服務(wù)器的網(wǎng)絡(luò)用量,進(jìn)而支持多方視訊會議;

  • 開源實(shí)現(xiàn)

    Paste_Image.png

    live555 C/S C++
    darwin S C++
    VLC C C

  • 與HTTP相比
    HTTP請求由客戶機(jī)發(fā)出,服務(wù)器響應(yīng);使用RTSP時,客戶機(jī)和服務(wù)器都可以發(fā)出請求,即RTSP是可以雙向的;


    Paste_Image.png
  • RTSP簡單交互過程

  1. 查詢服務(wù)器端可用方法 OPTION request
  2. 得到媒體描述信息 DESCRIBE request
  3. 通過可接受的傳輸選項(xiàng),建立會話 SETUP request
  4. 請求開始傳送數(shù)據(jù) PLAY request
  5. 數(shù)據(jù)傳送播放中 RTP協(xié)議傳送數(shù)據(jù)
  6. 會話關(guān)閉,退出
RTP協(xié)議

每一個RTP數(shù)據(jù)報(bào)都由頭部和負(fù)載兩個部分組成,其中頭部12個字節(jié)的含義是固定的,而負(fù)載則可以是音頻或視頻數(shù)據(jù);

PS:RTSP在安防領(lǐng)域有廣泛應(yīng)用;

RTMP (Real Time Message Protocol) 實(shí)時消息傳輸協(xié)議

主要用來在Flash/AIR平臺和支持RTMP協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數(shù)據(jù)通信;是Adobe公司自己的規(guī)范,為flash播放器和服務(wù)器之間音頻、視頻和數(shù)據(jù)傳輸開發(fā)的私有協(xié)議;
業(yè)界大部分直播業(yè)務(wù)都會選擇用RTMP作為流媒體協(xié)議,通常會將數(shù)據(jù)流封裝成FLV通過HTTP提供出去;
優(yōu)點(diǎn):延時小,通常為1-3s;基于TCP長連接,不需要多次建連;
缺點(diǎn):iOS平臺不提供原生支持RTMP或HTTP-FLV的播放器,需要自主開發(fā);
?- 累積延遲
RTMP是基于TCP不會丟包,但是當(dāng)網(wǎng)絡(luò)狀態(tài)差時,服務(wù)器會將包緩存起來,導(dǎo)致累積的延遲,待網(wǎng)絡(luò)狀況好了,就一起發(fā)給客戶端;這個的對策就是,當(dāng)客戶端的緩沖區(qū)很大時,就斷開重連;
PS:對實(shí)時性有一些要求的應(yīng)用,以PC為主?互聯(lián)網(wǎng)直播領(lǐng)域(RTMP+CDN);

媒體封裝格式

TS/FLV/MP4

  • FLV 需要flash支持
    PC在線播放最常見,因?yàn)閍pple不支持flash,apple無法使用,很多智能機(jī)也無法使用;也支持直播;
  • TS HLS的媒體切片格式
    Apple產(chǎn)品,支持動態(tài)碼率適配,支持直播;
  • mp4 PC/Apple/Android都支持
    文件頭太大,結(jié)構(gòu)復(fù)雜,長視頻的大文件頭影響加載速度的視頻體驗(yàn),所以短視頻更常見;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容