HLS簡介

視頻轉(zhuǎn)碼 video transcoding:是指將一個視頻碼流轉(zhuǎn)換另一個視頻碼流,以適應(yīng)不同的網(wǎng)絡(luò)帶寬程储,不同的終端處理能力和不同的客戶需求臂寝。點播系統(tǒng)中的轉(zhuǎn)碼一般是離線轉(zhuǎn)碼摊灭,直播系統(tǒng)中的轉(zhuǎn)碼為即時轉(zhuǎn)碼咆贬。

終端適配:將特定格式的視頻轉(zhuǎn)換成終端適配能力較高的視頻帚呼,以便在最廣泛的終端上實現(xiàn)分發(fā)。例如眷蜈,將AVI格式(對網(wǎng)絡(luò)播放支持不友好)的視頻轉(zhuǎn)碼成MP4(幾乎所有網(wǎng)絡(luò)播放器都支持)沈自,以便在互聯(lián)網(wǎng)上進行分發(fā);

帶寬適配:將視頻轉(zhuǎn)碼為超清枯途、高清、標(biāo)清等多路不同碼率的視頻榴啸,以便不同網(wǎng)絡(luò)帶寬的用戶選擇不同碼率的視頻晚岭;

播放友好:優(yōu)化視頻封裝格式,以實現(xiàn)更好地播放效果坦报;例如,某些MP4文件的MOOV頭可能位于尾部,導(dǎo)致部分播放器需要下載整個MP4文件之后才能開始播放;可以通過轉(zhuǎn)碼將MOOV頭調(diào)整到文件頭部畔濒,以便播放器無需下載整個文件便可以開始播放辫愉;

增加水印:在視頻中增加版權(quán)相關(guān)圖片(例如電視臺的臺標(biāo))胸懈,宣示視頻本身的版權(quán)歸屬阐肤;

降低分發(fā)帶寬:使用更先進的編碼方式對視頻進行編碼浑塞,確保在不降低畫質(zhì)的前提下降低視頻碼率政己,從而達到節(jié)省帶寬的目的;例如對原本使用H.264編碼的視頻進行H.265編碼歇由;

降低存儲成本:對于以歸檔、備案為目的的視頻糊昙,直接存儲原始視頻可能會帶來較高的存儲成本谢谦,此時可以將視頻轉(zhuǎn)為低碼率進行存儲,從而大幅降低視頻存儲成本回挽。

HLS:HTTP Live Streaming,是由蘋果公司提出的基于HTT的流媒體網(wǎng)絡(luò)傳輸協(xié)議祭刚。他的工作原理是把整個流分成一個個小的基于HTTP的文件來下載队塘,每次只下載一些。當(dāng)媒體流正在播放時憔古,客戶端可以選擇從愈多不同的備用源中以不同的速率下載同樣的資源,允許流媒體繪畫適應(yīng)不同的數(shù)據(jù)速率锯梁。在開始一個流媒體會話時焰情,客戶端會下載一個包含源數(shù)據(jù)的extended M3U(m3u8)playlist文件陌凳,用于尋找可用的媒體流。

HLS協(xié)議規(guī)定:

視頻的封裝格式是TS合敦。

視頻的編碼格式為H264,音頻編碼格式為MP3验游、AAC或者AC-3保檐。

除了TS視頻文件本身崔梗,還定義了用來控制播放的m3u8文件(文本文件)。

HLS 框架圖

把視頻文件上傳到服務(wù)器上扔亥,視頻會被轉(zhuǎn)換成HLS格式的視頻(即TS和m3u8文件)谈为。Media encoder模塊負(fù)責(zé)將視頻源中的視頻數(shù)據(jù)轉(zhuǎn)碼到目標(biāo)編碼格式(H264)的視頻數(shù)據(jù),然后Stream Segment模塊將視頻切片伞鲫,切片的結(jié)果就是index file(m3u8)和ts文件了。


HLS index file

HLS的index文件就是m3u8的文件,先下載一級index file(master_playlist.m3u8)瘪菌,它里面記錄了二級索引文件的地址(Alternate-A、Alternate-B诵肛、Alternate-C)的地址默穴,然后客戶端再去下載二級索引文件,二級索引文件中又記錄了TS文件的下載地址蓄诽,這樣客戶端就可以按順序下載TS視頻文件并連續(xù)播放。

master_playlist.m3u8:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=354986,RESOLUTION=320x180? ? //視頻流的比特率和分辨率

v.f210.m3u8? ? //二級index文件的路徑乙埃,可以是相對路徑锯岖,也可以是絕對路徑

#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=633293,RESOLUTION=640x360

v.f220.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=1198319,RESOLUTION=1280x720

v.f230.m3u8

master_playlist.m3u8文件中記錄了不同比特率視頻流的二級index文件路徑,客戶端可以自己判斷自己的現(xiàn)行網(wǎng)絡(luò)帶寬出吹,來決定播放哪一個視頻流。也可以在網(wǎng)絡(luò)帶寬變化的時候平滑切換到和帶寬匹配的視頻流鸠珠。

#EXTM3U? ?//每個M3U文件第一行必須是這個tag,提供標(biāo)示作用

#EXT-X-VERSION:3? ?//用以標(biāo)示協(xié)議版本跳芳。這里是3, 那么這里用的就是HLS協(xié)議第三個版本娄琉,此標(biāo)簽只能有0或1個吓歇,不寫代表使用版本1

#EXT-X-TARGETDURATION:17? //EXT-X-TARGETDURATION指定當(dāng)前視頻流中的切片文件的最大時長,也就是說這些ts切片的時長不能大于#EXT-X-TARGETDURATION的值城看。

#EXT-X-MEDIA-SEQUENCE:0 //切片的開始序號。每一個切片都有唯一的序號炼鞠,相鄰之間序號+1轰胁。這個編號會繼續(xù)增長,保證流的連續(xù)性赃阀。

#EXT-X-KEY:METHOD=AES-128, //HLS可以被加密」塾危客戶端通過讀取M3U8文件中的#EXT-X_KEY標(biāo)簽可以獲取解密的密鑰驮俗。EXT-X-KEY指示的密鑰信息作用于當(dāng)前EXT-X-KEY標(biāo)簽至下一個EXT-X-KEY標(biāo)簽(若沒有下一個,則到最后一個Segment)之間的所有Segments意述。METHOD指示加密算法,可用的取值有NONE拌屏、AES-128和SAMPLE-AES术荤,NONE表示不加密倚喂。URI指示獲取密鑰的路徑,該項不可省略焦读,除非METHOD為NONE舱权。

#EXTINF:2.000000,? ?//EXTINF表示每個ts切片視頻文件的時長

v.f230.ts?start=0&end=204735&type=mpegts //ts文件的下載地址,這里同樣使用了相對路徑宴倍。

...

#EXT-X-ENDLIST? ? ?//EXT-X-ENDLIST這個表示視頻結(jié)束,有這個標(biāo)志同時也說明當(dāng)前的流是一個非直播流俗他。

播放模式

點播VOD的特點就是當(dāng)前時間點可以獲取到所有index文件和ts文件阔逼,二級index文件中記錄了所有ts文件的地址。這種模式允許客戶端訪問全部內(nèi)容嗜浮。上面的例子中就是一個點播模式下的m3u8的結(jié)構(gòu)。

Live模式就是實時生成M3u8和ts文件夕春。它的索引文件一直處于動態(tài)變化的专挪,播放的時候需要不斷下載二級index文件片排,以獲得最新生成的ts文件播放視頻。如果一個二級index文件的末尾沒有#EXT-X-ENDLIST標(biāo)志率寡,說明它是一個Live視頻流。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乾蛤,一起剝皮案震驚了整個濱河市捅僵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庙楚,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酪捡,死亡現(xiàn)場離奇詭異,居然都是意外死亡捺疼,警方通過查閱死者的電腦和手機永罚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媳友,“玉大人产捞,你說我怎么就攤上這事∨髁伲” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵赶促,是天一觀的道長挟炬。 經(jīng)常有香客問我,道長谤祖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任凸主,我火速辦了婚禮额湘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锋华。我一直安慰自己,他們只是感情好谨湘,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坊罢,像睡著了一般擅耽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乖仇,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音起趾,去河邊找鬼警儒。 笑死,一個胖子當(dāng)著我的面吹牛蜀铲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播变姨,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼厌丑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了怒竿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耍属,沒想到半個月后巩检,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厚骗,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡领舰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了舍咖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锉桑。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖民轴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瑰钮,我是刑警寧澤微驶,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站祈搜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏容燕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一官卡、第九天 我趴在偏房一處隱蔽的房頂上張望醋虏。 院中可真熱鬧,春花似錦颈嚼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至署驻,卻和暖如春健霹,著一層夾襖步出監(jiān)牢的瞬間瓶蚂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工阶捆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钦听,地道東北人洒试。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓垒棋,卻偏偏與公主長得像痪宰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子乖订,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

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