流媒體通信協(xié)議
常用的流媒體協(xié)議主要有HTTP漸進(jìn)下載(如HLS)和基于RTSP/RTP的實(shí)時(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):
- 都是在應(yīng)用層;
- 理論上都可以做直播和點(diǎn)播羊异,但一般直播用RTSP/RTMP事秀,點(diǎn)播用HTTP;視頻會(huì)議用RTMP球化;
- 區(qū)別:
- HTTP將搜有數(shù)據(jù)作為文件做處理秽晚,不是流媒體協(xié)議;RTMP和RTSP是流媒體協(xié)議筒愚;HTTP協(xié)議簡單赴蝇,流媒體協(xié)議復(fù)雜;
- RTMP是Adobe的私有協(xié)議巢掺,未完全公司句伶,RTSP/HTTP協(xié)議是共有協(xié)議,有專門機(jī)構(gòu)做維護(hù)陆淀;
- RTMP是flv/f4v格式流考余,RTSP協(xié)議一般傳輸?shù)氖莟s/mp4格式的流,HTTP沒有特定的流轧苫;
- RTSP傳輸一般需要2-3個(gè)通道楚堤,命令和數(shù)據(jù)通道分離,HTTP/RTMP一般在一個(gè)TCP通道上傳輸命令和數(shù)據(jù)含懊;
- HLS主要延時(shí)比較大身冬,RTMP/RTSP優(yōu)勢在于延時(shí)低;
PS:可使用 FFMPEG 將RTSP協(xié)議轉(zhuǎn)換為RTMP 數(shù)據(jù)流岔乔;
HLS: HTTP Live Streaming
Apple的動(dòng)態(tài)碼率自適應(yīng)技術(shù)酥筝,主要用于PC和Apple終端的音視頻服務(wù),包括一個(gè)m3u(8)索引文件雏门,TS媒體分片文件和key加密文件嘿歌;
HLS協(xié)議的小切片方式會(huì)生成大量的文件,存儲(chǔ)和處理這些文件會(huì)造成大量資源浪費(fèi)茁影;如果要實(shí)現(xiàn)數(shù)天的時(shí)移宙帝,所以努力將會(huì)是個(gè)巨額數(shù)字,明顯影響請求速度募闲;新型系統(tǒng)采用了內(nèi)存緩存數(shù)據(jù)實(shí)時(shí)切片技術(shù)步脓,將TS切片文件存到內(nèi)存當(dāng)中,直接從服務(wù)器內(nèi)存讀取,極大提高了對終端的數(shù)據(jù)請求的反應(yīng)速度沪编,優(yōu)化了視頻觀看體驗(yàn);
HLS客戶端獲取到的并不是一個(gè)完整的數(shù)據(jù)流年扩,而是連續(xù)的蚁廓,短時(shí)長的媒體文件,客戶端不斷的現(xiàn)在并播放這些小文件厨幻;
缺點(diǎn):時(shí)延比較大相嵌,不斷的http請求,協(xié)議建立過程也耗時(shí)况脆;
優(yōu)點(diǎn):采用HTTP傳輸饭宾,不用考慮防火墻和代理的問題;使用分片文件來播放格了,客戶端可以平滑的切換碼率看铆,以適應(yīng)不同寬帶條件下的播放;iOS平臺(tái)可以獲得天然支持盛末,采用AVPlayer就能直接播放弹惦;
PS:移動(dòng)端HLS用的比較廣泛一些;
直播視頻流程:
RTSP (Real Time Streaming Protocol) 實(shí)時(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)時(shí)間同步,所以比較能容忍網(wǎng)絡(luò)延遲嚎京;允許多個(gè)串流需求控制嗡贺,可以降低服務(wù)器的網(wǎng)絡(luò)用量,進(jìn)而支持多方視訊會(huì)議挖藏;
-
開源實(shí)現(xiàn)
live555 C/S C++
darwin S C++
VLC C C -
與HTTP相比
HTTP請求由客戶機(jī)發(fā)出暑刃,服務(wù)器響應(yīng);使用RTSP時(shí)膜眠,客戶機(jī)和服務(wù)器都可以發(fā)出請求岩臣,即RTSP是可以雙向的;
RTSP簡單交互過程
- 查詢服務(wù)器端可用方法 OPTION request
- 得到媒體描述信息 DESCRIBE request
- 通過可接受的傳輸選項(xiàng)宵膨,建立會(huì)話 SETUP request
- 請求開始傳送數(shù)據(jù) PLAY request
- 數(shù)據(jù)傳送播放中 RTP協(xié)議傳送數(shù)據(jù)
- 會(huì)話關(guān)閉架谎,退出
RTP協(xié)議
每一個(gè)RTP數(shù)據(jù)報(bào)都由頭部和負(fù)載兩個(gè)部分組成,其中頭部12個(gè)字節(jié)的含義是固定的辟躏,而負(fù)載則可以是音頻或視頻數(shù)據(jù)谷扣;
PS:RTSP在安防領(lǐng)域有廣泛應(yīng)用;
RTMP (Real Time Message Protocol) 實(shí)時(shí)消息傳輸協(xié)議
主要用來在Flash/AIR平臺(tái)和支持RTMP協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數(shù)據(jù)通信;是Adobe公司自己的規(guī)范会涎,為flash播放器和服務(wù)器之間音頻裹匙、視頻和數(shù)據(jù)傳輸開發(fā)的私有協(xié)議;
業(yè)界大部分直播業(yè)務(wù)都會(huì)選擇用RTMP作為流媒體協(xié)議末秃,通常會(huì)將數(shù)據(jù)流封裝成FLV通過HTTP提供出去概页;
優(yōu)點(diǎn):延時(shí)小,通常為1-3s练慕;基于TCP長連接惰匙,不需要多次建連;
缺點(diǎn):iOS平臺(tái)不提供原生支持RTMP或HTTP-FLV的播放器铃将,需要自主開發(fā)项鬼;
?- 累積延遲
RTMP是基于TCP不會(huì)丟包,但是當(dāng)網(wǎng)絡(luò)狀態(tài)差時(shí)劲阎,服務(wù)器會(huì)將包緩存起來绘盟,導(dǎo)致累積的延遲,待網(wǎng)絡(luò)狀況好了悯仙,就一起發(fā)給客戶端奥此;這個(gè)的對策就是,當(dāng)客戶端的緩沖區(qū)很大時(shí)雁比,就斷開重連稚虎;
PS:對實(shí)時(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)品丈牢,支持動(dòng)態(tài)碼率適配祭钉,支持直播; - mp4 PC/Apple/Android都支持
文件頭太大己沛,結(jié)構(gòu)復(fù)雜慌核,長視頻的大文件頭影響加載速度的視頻體驗(yàn),所以短視頻更常見申尼;