前往
大廳
主題

串流媒體 HLS m3u8

路人乙 | 2023-07-18 10:03:38 | 巴幣 0 | 人氣 190

哈嚕~進來看這篇文章的你,如果不是想增廣見聞、學習新知,就是想多了解一些好用來壞壞。

這只是用業餘時間所做的學習,如有錯誤的地方還請各位請多包涵。

小弟我也不是這科系的,如果想知道更多內容那…不好意思,可能得請你去看其他文章。

好的!廢話太多進入正題!

先講講什麼是串流媒體,在這邊讓我簡單引用維基百科

「串流媒體(英語:Streaming media),指將一連串的多媒體資料壓縮後,經過網際網路分段傳送資料,在網際網路上即時傳輸影音以供觀賞的一種技術與過程,此技術使得資料封包得以像流水一樣傳送,如果不使用此技術,就必須在使用前下載整個媒體檔案。」

看不懂這段話的意思?那我說的更白話點,串流媒體就是把一部電影切成無數個小片段一段一段如流水般發送給你,並讓你觀賞的技術。

如果你是一個常常下載影片的話應該會發現,以前下載的影片格式大多是mp4, mov, avi, flv…等,到了近幾年卻發現變成了m3u8, mpd這兩種。

先來講講m3u8這得東西,這是由蘋果公司提出,全名HTTP Live Streaming,縮寫為HLS

那來講講這些格式是什麼,讓我們用筆記本來打開m3u8看看(檔案是我從測試網站上抓下的),測試網站的m3u8檔案有三個,我自己遇過的大多數網站通常m3u8只有一個。

三個檔案內容分別為,影音格式、影片、音頻,那我就分別開兩個檔案稍微講下就好,因為影片和音頻的檔案內容基本上差不多。
雖然我也不是很會,只是經過爬文後還是能勉強了解內容寫的是什麼,就讓我稍微講解下
先來看第一個檔案的內容,每句都好讓我們一個一個看。

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio_high",NAME="englishstereo",LANGUAGE="en",AUTOSELECT=YES,URI="11331_audio_1_stereo_192000.m3u8"
這段是規定了音頻的格式,檔案類型(Type),分組名稱(Group-ID),檔名(Name),語言(Language),是否自動選擇(AutoSelect),編碼方式( Codecs)

#EXT-X-STREAM-INF:BANDWIDTH=9792000,CODECS="avc1.42c00d,mp4a.40.2",RESOLUTION=1920x1080,AUDIO="audio_high"
11331_video_1080_4800000.m3u8
這裡面規定了影片的位元率(Bandwidth),編碼方式( Codecs),分辨率(Resolution)。可以看到這段影片總共有六種解析度。

而第二個檔案的內容則是影片相關內容

EXT-X-VERSION:3
意思是這是M3U8的版本(Version),這是第三版。

EXT-X-MEDIA-SEQUENCE:0
這裡說的是影片檔的編號順序(Sequence),會從0、1、2開始計數,直到最後一個檔案為止。

EXT-X-TARGETDURATION:4
這段則是規定了每一個影片片段長度,而這句規定了每個影片最長不能超過4秒
因此如果是單純下載卻沒有進行合併,你會發現你下載了滿滿的短影片,且每一個影片都不超過4秒。

#EXT-X-KEY:METHOD=AES-128,URI="../video/1080_4800000/enc_hls/encryption.key",IV=0x613E8B8CE9CE208C4EAD4A0E03636371

而這一段可以算是這個檔案內的重點部分,為什麼呢? 因為從這裡證實了這個影片是經過加密過的。這邊說明了使用的加密方式(Method)為AES-128
還有一個URI,這個URI裡面內含了一個key的解鎖文件,這就是解密影片的文件。然而重點在後面的IV(初始向量),這個就跟密碼學相關了,在這邊就不寫上他的加密原理,想知道的可以自行去查詢。
總之,只要將URI和初始向量二者結合起來,即可達到解密的目的。
 
在現代隨著資訊科技的不斷發展,這種工作早就可以丟給電腦處理了。 所以現在也逐漸發展出了不同的加密方式,適當更新加密方式,以防不法分子獲取重要資料的同時,也不要讓密碼太過複雜,這會使電腦在處理的過程中將過多的算力放在解密上,造成影片看一段卡一下,對於使用中低效能的電腦使用者們來說無比痛苦阿。

而之後的URL則是影片所在的位置,以及影片格式為.ts檔。
透過觀看m3u8裡面所寫的內容可以知道,如果要下載會得到影片檔和音頻檔兩種檔案,且都經過加密因此下載後的檔案還需要經過解密以及合併後才可觀看。
總結,m3u8其實就是一份清單,裡面記錄了每一段影片所在的位置。這樣做的目的是要分攤每個影片的大小,避免網速不夠快進而影響觀影體驗。
通常想透過下載軟體IDMInternetDownload Manager進行下載,通常高機率跳出「這是受保護的影片」,而無法下載,如下圖:
當然還是有其他方法可以搭配IDM進行下載,如:N_m3u8DL-CLI
至於怎麼做?我想應該不需要補充,畢竟這方法網路上到處都是,且比較好解決。

創作回應

更多創作