主流的基于HTTP的流媒體網(wǎng)絡(luò)傳輸協(xié)議主要有四種:
蘋果的HLS
微軟的Smooth Streaming
Adobe的HDS
國際標(biāo)準(zhǔn)MPEG-DASH
分別介紹一下芋酌。
蘋果的HLS
全稱HTTP Live Streaming。HLS是由蘋果公司提出基于HTTP的流媒體網(wǎng)絡(luò)傳輸協(xié)議疗涉。是蘋果公司QuickTime X和iPhone軟件系統(tǒng)的一部分。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載吟秩,每次只下載一些咱扣。當(dāng)媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源涵防,允許流媒體會話適應(yīng)不同的數(shù)據(jù)速率闹伪。在開始一個流媒體會話時,客戶端會下載一個包含元數(shù)據(jù)的擴充 M3U (m3u8) 播放列表文件壮池,用于尋找可用的媒體流偏瓤。
HLS只請求基本的HTTP報文,與實時傳輸協(xié)議(RTP)不同火窒,HLS可以穿過任何允許HTTP數(shù)據(jù)通過的防火墻或者代理服務(wù)器硼补。它也很容易使用CDN來傳輸媒體流驮肉。
微軟的Smooth Streaming
Smooth Streaming 是IIS的媒體服務(wù)擴展熏矿,用于支持基于HTTP的自適應(yīng)流。
在2010年11月發(fā)布的 IIS Media Services 4.0 中离钝,微軟引入了一項使 Live Smooth Streaming H.264/AAC 視頻動態(tài)封裝成 Apple HLS 格式的功能票编,直接提供給 iOS 設(shè)備,而不需要再次編碼卵渴。
MSS 的文件切幀式為 mp4慧域,索引文件為ism/ismc,同時支持直播和時移浪读。
Adobe的HDS
HDS通過HTTP向Adobe Flash Player或Adobe AIR提供多比特率內(nèi)容昔榴。
HDS 的文件格式為 FLV/F4V/MP4辛藻,索引文件為 f4m,同時支持直播和時移互订。
國際標(biāo)準(zhǔn)MPEG-DASH
全稱Dynamic Adaptive Streaming over HTTP吱肌,簡稱DASH,是一種自適應(yīng)比特率流技術(shù)仰禽,使高質(zhì)量流媒體可以通過傳統(tǒng)的HTTP網(wǎng)絡(luò)服務(wù)器以互聯(lián)網(wǎng)傳遞氮墨。類似蘋果公司的HTTP Live Streaming(HLS)方案,MPEG-DASH會將內(nèi)容分解成一系列小型的基于HTTP的文件片段吐葵,每個片段包含很短長度的可播放內(nèi)容规揪,而內(nèi)容總長度可能長達數(shù)小時(例如電影或體育賽事直播)。內(nèi)容將被制成多種比特率的備選片段温峭,以提供多種比特率的版本供選用猛铅。當(dāng)內(nèi)容被MPEG-DASH客戶端回放時,客戶端將根據(jù)當(dāng)前網(wǎng)絡(luò)條件自動選擇下載和播放哪一個備選方案凤藏∞确兀客戶端將選擇可及時下載的最高比特率片段進行播放,從而避免播放卡頓或重新緩沖事件清笨。也因如此月杉,MPEG-DASH客戶端可以無縫適應(yīng)不斷變化的網(wǎng)絡(luò)條件并提供高質(zhì)量的播放體驗,擁有更少的卡頓與重新緩沖發(fā)生率抠艾。
MPEG-DASH是首個基于HTTP的自適應(yīng)比特率流解決方案苛萎,它也是一項國際標(biāo)準(zhǔn)。MPEG-DASH不應(yīng)該與傳輸協(xié)議混淆——MPEG-DASH使用TCP傳輸協(xié)議检号。
MPEG-DASH使用現(xiàn)有的HTTP網(wǎng)絡(luò)服務(wù)器基礎(chǔ)設(shè)施腌歉。它允許如互聯(lián)網(wǎng)電視、電視機頂盒齐苛、臺式電腦翘盖、智能手機、平板電腦等設(shè)備消費通過互聯(lián)網(wǎng)傳送的多媒體內(nèi)容(如視頻凹蜂、電視馍驯、廣播等),并可應(yīng)對變動的互聯(lián)網(wǎng)接收條件玛痊。自適應(yīng)流解決方案的標(biāo)準(zhǔn)化是為向市場提供信心汰瘫,使該解決方案可以用于通用部署,抗衡類似但更專有的解決方案擂煞,如微軟Smooth Streaming與Adobe的HDS混弥。
不同于HLS、HDS和Smooth Streaming对省,DASH不關(guān)心編解碼器蝗拿,因此它可以接受任何編碼格式編碼的內(nèi)容晾捏,如H.265、H.264哀托、VP9等粟瞬。
DASH是一項自適性流技術(shù),其將多媒體文件分割為一個或多個片段萤捆,并使用超文本傳輸協(xié)議傳遞給客戶端裙品。媒體演示描述(MPD)描述片段信息(計時、統(tǒng)一資源定位符俗或,以及媒體特征市怎,例如視頻分辨率和比特率),并且可以根據(jù)使用環(huán)境以不同的方式組織辛慰,例如SegmentList, SegmentTemplate, SegmentBase和SegmentTimeline区匠。片段可以包含任何媒體數(shù)據(jù),但是規(guī)范提供了與兩種容器類型一起使用的特定指導(dǎo)和格式:ISO基礎(chǔ)媒體文件格式(例如MP4文件格式)或MPEG-2傳輸流帅腌。
DASH不關(guān)心音頻/視頻的編解碼器驰弄。多媒體文件通常有一種或多種表示(即不同分辨率或比特率版本),并可基于不同的網(wǎng)絡(luò)條件速客、設(shè)備功能和用戶偏好進行選擇戚篙,達到自適性流和QoE (Quality of Experience) fairness。DASH也與底層的應(yīng)用層協(xié)議無關(guān)溺职,因此可以配合任何協(xié)議中使用岔擂。例如,基于CCN的DASH浪耘。
通過ExoPlayer乱灵,MPEG-DASH在Android上可原生使用,如三星智能電視2012+七冲、LG智能電視2012+痛倚、索尼電視2012+、飛利浦NetTV 4.1+澜躺、松下Viera 2013+和Chromecast蝉稳。YouTube以及Netflix已經(jīng)支持MPEG-DASH,并且可使用多種MPEG-DASH播放器苗踪。
bilibili已經(jīng)支持MPEG-DASH颠区。
雖然HTML5不直接支持MPEG-DASH,但是已有一些MPEG-DASH的JavaScript實現(xiàn)允許在網(wǎng)頁瀏覽器中通過HTML5 Media Source Extensions(MSE)使用MPEG-DASH通铲。另有其他JavaScript實現(xiàn),如bitdash播放器支持使用HTML5加密媒體擴展播放有DRM的MPEG-DASH器贩。當(dāng)與WebGL結(jié)合使用時颅夺,MPEG-DASH基于HTML5的自適應(yīng)比特率流還可實現(xiàn)360°視頻的實時和按需的高效流式傳輸朋截。
如果想通過我的文字更加深刻地了解這個世界,那就關(guān)注我的公眾號吧吧黄!
微信內(nèi)長按或用微信掃描下方的二維碼即可部服。
微信公眾號 長夜西風(fēng)
個人網(wǎng)站 http://www.cmder.info/