2016筆記——HLS

HLS同時支持流媒體的實時廣播和點播服務(wù)江醇。同時也支持不同bit速率的多個備用流润梯,允許根據(jù)當(dāng)前網(wǎng)絡(luò)的寬度去智能調(diào)整當(dāng)前使用的視頻流质况。

安全方面横堡,HLS提供了通過HTTPS加密對媒體文件進(jìn)行加密并對用戶進(jìn)行驗證,允許視頻發(fā)布者去保護(hù)自己的網(wǎng)絡(luò)谴返。

當(dāng)媒體流正在播放時煞肾,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應(yīng)不同的數(shù)據(jù)速率嗓袱。在開始一個流媒體會話時籍救,客戶端會下載一個包含元數(shù)據(jù)的extended M3U(m3u8) playlist文件,用于尋找可用的媒體流渠抹。

當(dāng)你的直播內(nèi)容持續(xù)10分鐘或者每五分鐘內(nèi)超過5M時蝙昙,你的APP直播服務(wù)必須采用HLS架構(gòu),否則不允許上架梧却。

HLS架構(gòu):

transport_stream_2x.png

其中輸入視頻源是由攝像機預(yù)先錄制好的奇颠,之后這些源會被編碼MPEG-4(H.264視頻 ;AAC 音頻)格式放航,然后用硬件打包到MPEG-2的傳輸流中烈拒。MPEG-2傳輸流會被分散為小片段然后保存為一個或多個系列的.ts格式的媒體文件。這個過程需要借助編碼工具來完成广鳍,比如Apple stream segmenter荆几。

純音頻會被編碼為一些音頻小片段,通常為ADTS頭的AAC赊时、MP3或者AC-3格式吨铸。

上面提及的切片器(segmenter)也會創(chuàng)建一個索引文件,通常會包含這些媒體文件的一個列表蛋叼,也能包含元數(shù)據(jù)焊傅。他一般都是一個.M3U8的列表剂陡,列表元素會關(guān)聯(lián)一個URL用于客戶端訪問狈涮,然后按序去請求這些URL狐胎。

服務(wù)器端可以采用硬件編碼和軟件編碼兩種形式,其功能都是按照上文描述的規(guī)則對現(xiàn)有的媒體文件進(jìn)行切片并使用索引文件進(jìn)行管理歌馍。

媒體編碼器獲取到音視頻設(shè)備的實時信號握巢,將其編碼后壓縮用于傳輸。而編碼格式必須配置為客戶端所支持的格式松却,比如H.264視頻和ACC音頻暴浦。當(dāng)前,支持用于視頻的MPEG-2傳輸流和純音頻MPEG基本流晓锻。編碼器通過本地網(wǎng)絡(luò)將MPEG-2傳輸流分發(fā)出去歌焦,送到流切片器那里。標(biāo)準(zhǔn)傳輸流和壓縮傳輸流無法混合使用砚哆。

流切片器(通常是一個軟件)會通過本地網(wǎng)絡(luò)從上面的媒體編碼器中讀取數(shù)據(jù)独撇,然后將這些數(shù)據(jù)切割為一組相等的時間間隔的媒體文件,雖然每一個片段都是一個單獨的文件躁锁,但是它們的來源是一個連續(xù)的流纷铣,切完照樣可以無縫重構(gòu)回去。

媒體片段是由切片器生成的战转,基于編碼后的媒體源搜立,并且是由一些列的.ts格式的文件組成,其中包含了你想通過MPEG-2傳送流攜帶的H.264視頻和AAC/MP3/AC-3音頻槐秧。對于純音頻的廣播啄踊,切片器可以生產(chǎn)MPEG基礎(chǔ)音頻流,其中包含了ADTS頭的AAC刁标、MP3颠通、AC3等音頻。

在編碼中途命雀,不要修改視頻編碼器的設(shè)置蒜哀,比如視頻大小或者編碼解碼器類型,如果避免不了吏砂,那修改動作必須發(fā)生在一個片段邊界撵儿。并且需要在之后相連的片段上用EXT-X-DISCONTINUITY進(jìn)行標(biāo)記。

索引文件(PlayLists)通常由切片器附帶生成狐血,保存為.M3U8格式淀歇,.m3u格式用于MP3音頻的索引文件。

下面這個.m3u8的playlist文件樣例匈织,其中包含了13個沒有加密的12秒鐘的媒體文件浪默。

屏幕快照 2016-07-05 10.00.35.png

分布式部分

分布式系統(tǒng)是一個網(wǎng)絡(luò)服務(wù)或者一個網(wǎng)絡(luò)緩存系統(tǒng)牡直,用于通過HTTP向客戶端發(fā)送媒體文件和索引文件。不用自定義模塊發(fā)送內(nèi)容功能纳决,僅需要簡單的網(wǎng)絡(luò)配置即可使用碰逸,這種配置就是限定.M3U8文件和.ts文件的MIME類型。

客戶端部分

客戶端開始時會去抓取索引文件(.m3u8/.m3u)阔加,其中用URL來標(biāo)記不同的流饵史。索引文件可以指定可用媒體文件的位置,解密的密鑰胜榔,以及任何可以切換的流胳喷。對于選中的流,客戶端會有序的下載每一個可獲得的文件夭织。每一個文件都包含流中的連環(huán)碎片吭露。一旦下載到足夠量的數(shù)據(jù),客戶端會開始向用戶展示重新裝配好的媒體資源尊惰。

客戶端負(fù)責(zé)抓取任何解密密鑰讲竿、認(rèn)證或者展示一個用于認(rèn)證的界面,之后再解密需要的文件择浊。這個過程會一直持續(xù)戴卜,直到出現(xiàn)結(jié)束標(biāo)記#EXT-X-ENDLIST。如果結(jié)束標(biāo)記不出現(xiàn)琢岩,該索引就是用于持續(xù)廣播的投剥,客戶端會定期的加載一些新的索引文件〉?祝客戶端會從新更新的索引文件中去查找加密密鑰江锨,并且將關(guān)聯(lián)的URL加入到請求隊列中去。

屏幕快照 2016-07-05 10.12.25.png

會話模式

通常包含Live和VOD兩種

點播VOD的特點就是可以獲取到一個靜態(tài)的索引文件糕篇,其中那個包含一套完整的資源文件地址啄育。這種模式允許客戶端訪問全部節(jié)目。VOD點播擁有先進(jìn)的下載技術(shù)拌消,包括加密認(rèn)證技術(shù)和動態(tài)切換文件傳輸速率的功能(用于不同分辨率視頻之間的切換)挑豌。

Live會話就是實時時間的錄制展示,它的索引文件一直處于動態(tài)變化的墩崩,你需要不斷的更新索引文件playlist氓英,然后移除舊的索引文件。這種類型通過向索引文件添加媒體地址就很容易的轉(zhuǎn)化為VOD類型鹦筹。在轉(zhuǎn)化時不要移除原來舊的源铝阐,而是通過添加一個#EXT-X-ENDLIST標(biāo)記來終止實時事件。轉(zhuǎn)化時如果你的索引文件中包含EXT-X-PLAYLIST-TYPE標(biāo)簽铐拐,你需要將值從EVENT改為VOD徘键。

流切換

如果你的視頻具備流切換功能练对,這對用戶來說是一個非常棒的體驗,處于不同的帶寬吹害、不同的網(wǎng)速播放不同清晰度的視頻流螟凭,如此智能的流切換會讓用戶感覺到非常流暢的觀影體驗,同時不同的設(shè)備也可以作為選擇的條件赠制,比如視網(wǎng)膜屏可以在網(wǎng)速良好的情況下播放清晰度更高的視頻流赂摆。

這種功能的實現(xiàn)在于挟憔,索引文件的特殊結(jié)構(gòu):

indexing_2x.png

具備流切換的索引通常由主索引和鏈接不同寬帶速率的資源的子索引構(gòu)成钟些,由子索引再鏈接對應(yīng)的.ts視頻切片文件。其中主索引只下載一次绊谭,而子索引則會不定期的下載政恍,通常會先使用主索引中列出的第一個子索引,之后才會根據(jù)當(dāng)時的網(wǎng)絡(luò)情況去動態(tài)切換適合的流达传「莺模客戶端會在任何時間去切換不同的流,比如連入或者退出一個wifi熱點宪赶。所有的切換都會使用相同的音頻文件宗弯,在不同的流之間平滑的進(jìn)行切換。

這一套不同速率的視頻都是由工具生成的搂妻。

HLS小結(jié):

屏幕快照 2016-07-05 11.16.59.png

加油~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒙保,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子欲主,更是在濱河造成了極大的恐慌邓厕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扁瓢,死亡現(xiàn)場離奇詭異详恼,居然都是意外死亡,警方通過查閱死者的電腦和手機引几,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門昧互,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伟桅,你說我怎么就攤上這事敞掘。” “怎么了贿讹?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵渐逃,是天一觀的道長。 經(jīng)常有香客問我民褂,道長茄菊,這世上最難降的妖魔是什么疯潭? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮面殖,結(jié)果婚禮上竖哩,老公的妹妹穿的比我還像新娘。我一直安慰自己脊僚,他們只是感情好相叁,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辽幌,像睡著了一般增淹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乌企,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天虑润,我揣著相機與錄音,去河邊找鬼加酵。 笑死拳喻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的猪腕。 我是一名探鬼主播冗澈,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陋葡!你這毒婦竟也來了亚亲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤脖岛,失蹤者是張志新(化名)和其女友劉穎朵栖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柴梆,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡陨溅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绍在。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片门扇。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖偿渡,靈堂內(nèi)的尸體忽然破棺而出臼寄,到底是詐尸還是另有隱情,我是刑警寧澤溜宽,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布吉拳,位于F島的核電站,受9級特大地震影響适揉,放射性物質(zhì)發(fā)生泄漏留攒。R本人自食惡果不足惜煤惩,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炼邀。 院中可真熱鬧魄揉,春花似錦、人聲如沸拭宁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杰标。三九已至兵怯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間在旱,已是汗流浹背摇零。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留桶蝎,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓谅畅,卻偏偏與公主長得像登渣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子毡泻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容