哈嚕~進(jìn)來(lái)看這篇文章的你,如果不是想增廣見(jiàn)聞、學(xué)習(xí)新知,就是想多了解一些好用來(lái)壞壞。
這只是用業(yè)餘時(shí)間所做的學(xué)習(xí),如有錯(cuò)誤的地方還請(qǐng)各位請(qǐng)多包涵。
小弟我也不是這科系的,如果想知道更多內(nèi)容那…不好意思,可能得請(qǐng)你去看其他文章。
好的!廢話(huà)太多進(jìn)入正題!
先講講什麼是串流媒體,在這邊讓我簡(jiǎn)單引用維基百科
「串流媒體(英語(yǔ):Streaming media),指將一連串的多媒體資料壓縮後,經(jīng)過(guò)網(wǎng)際網(wǎng)路分段傳送資料,在網(wǎng)際網(wǎng)路上即時(shí)傳輸影音以供觀賞的一種技術(shù)與過(guò)程,此技術(shù)使得資料封包得以像流水一樣傳送,如果不使用此技術(shù),就必須在使用前下載整個(gè)媒體檔案?!?/b>
看不懂這段話(huà)的意思?那我說(shuō)的更白話(huà)點(diǎn),串流媒體就是把一部電影切成無(wú)數(shù)個(gè)小片段一段一段如流水般發(fā)送給你,並讓你觀賞的技術(shù)。
如果你是一個(gè)常常下載影片的話(huà)應(yīng)該會(huì)發(fā)現(xiàn),以前下載的影片格式大多是mp4, mov, avi, flv…等,到了近幾年卻發(fā)現(xiàn)變成了m3u8, mpd這兩種。
先來(lái)講講m3u8這得東西,這是由蘋(píng)果公司提出,全名HTTP Live Streaming,縮寫(xiě)為HLS。
那來(lái)講講這些格式是什麼,讓我們用筆記本來(lái)打開(kāi)m3u8看看(檔案是我從測(cè)試網(wǎng)站上抓下的),測(cè)試網(wǎng)站的m3u8檔案有三個(gè),我自己遇過(guò)的大多數(shù)網(wǎng)站通常m3u8只有一個(gè)。
雖然我也不是很會(huì),只是經(jīng)過(guò)爬文後還是能勉強(qiáng)了解內(nèi)容寫(xiě)的是什麼,就讓我稍微講解下
通常想透過(guò)下載軟體IDM(InternetDownload Manager)進(jìn)行下載,通常高機(jī)率跳出「這是受保護(hù)的影片」,而無(wú)法下載,如下圖:
先來(lái)看第一個(gè)檔案的內(nèi)容,每句都好讓我們一個(gè)一個(gè)看。
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio_high",NAME="englishstereo",LANGUAGE="en",AUTOSELECT=YES,URI="11331_audio_1_stereo_192000.m3u8"
這段是規(guī)定了音頻的格式,檔案類(lèi)型(Type),分組名稱(chēng)(Group-ID),檔名(Name),語(yǔ)言(Language),是否自動(dòng)選擇(AutoSelect),編碼方式( Codecs)
#EXT-X-STREAM-INF:BANDWIDTH=9792000,CODECS="avc1.42c00d,mp4a.40.2",RESOLUTION=1920x1080,AUDIO="audio_high"
11331_video_1080_4800000.m3u8
這裡面規(guī)定了影片的位元率(Bandwidth),編碼方式( Codecs),分辨率(Resolution)??梢钥吹竭@段影片總共有六種解析度。
而第二個(gè)檔案的內(nèi)容則是影片相關(guān)內(nèi)容
EXT-X-VERSION:3
意思是這是M3U8的版本(Version),這是第三版。
EXT-X-MEDIA-SEQUENCE:0
這裡說(shuō)的是影片檔的編號(hào)順序(Sequence),會(huì)從0、1、2開(kāi)始計(jì)數(shù),直到最後一個(gè)檔案為止。
EXT-X-TARGETDURATION:4
這段則是規(guī)定了每一個(gè)影片片段長(zhǎng)度,而這句規(guī)定了每個(gè)影片最長(zhǎng)不能超過(guò)4秒。
因此如果是單純下載卻沒(méi)有進(jìn)行合併,你會(huì)發(fā)現(xiàn)你下載了滿(mǎn)滿(mǎn)的短影片,且每一個(gè)影片都不超過(guò)4秒。
#EXT-X-KEY:METHOD=AES-128,URI="../video/1080_4800000/enc_hls/encryption.key",IV=0x613E8B8CE9CE208C4EAD4A0E03636371
而這一段可以算是這個(gè)檔案內(nèi)的重點(diǎn)部分,為什麼呢? 因?yàn)閺倪@裡證實(shí)了這個(gè)影片是經(jīng)過(guò)加密過(guò)的。這邊說(shuō)明了使用的加密方式(Method)為AES-128。
還有一個(gè)URI,這個(gè)URI裡面內(nèi)含了一個(gè)key的解鎖文件,這就是解密影片的文件。然而重點(diǎn)在後面的IV(初始向量),這個(gè)就跟密碼學(xué)相關(guān)了,在這邊就不寫(xiě)上他的加密原理,想知道的可以自行去查詢(xún)。
總之,只要將URI和初始向量二者結(jié)合起來(lái),即可達(dá)到解密的目的。
在現(xiàn)代隨著資訊科技的不斷發(fā)展,這種工作早就可以丟給電腦處理了。 所以現(xiàn)在也逐漸發(fā)展出了不同的加密方式,適當(dāng)更新加密方式,以防不法分子獲取重要資料的同時(shí),也不要讓密碼太過(guò)複雜,這會(huì)使電腦在處理的過(guò)程中將過(guò)多的算力放在解密上,造成影片看一段卡一下,對(duì)於使用中低效能的電腦使用者們來(lái)說(shuō)無(wú)比痛苦阿。
而之後的URL則是影片所在的位置,以及影片格式為.ts檔。
透過(guò)觀看m3u8裡面所寫(xiě)的內(nèi)容可以知道,如果要下載會(huì)得到影片檔和音頻檔兩種檔案,且都經(jīng)過(guò)加密因此下載後的檔案還需要經(jīng)過(guò)解密以及合併後才可觀看。
總結(jié),m3u8其實(shí)就是一份清單,裡面記錄了每一段影片所在的位置。這樣做的目的是要分?jǐn)偯總€(gè)影片的大小,避免網(wǎng)速不夠快進(jìn)而影響觀影體驗(yàn)。
當(dāng)然還是有其他方法可以搭配IDM進(jìn)行下載,如:N_m3u8DL-CLI
至於怎麼做?我想應(yīng)該不需要補(bǔ)充,畢竟這方法網(wǎng)路上到處都是,且比較好解決。