為什麼影片右鍵另存不下來
很多網站不把一部片子存成一個檔案。它們把片子切成幾秒鐘一段的小片段,
再寫一份清單,告訴播放器先放哪段、後放哪段。清單的副檔名通常是 .m3u8(HLS)
或者 .mpd(DASH)。你在頁面上右鍵,能看到的只是播放器這個殼,
底下那幾百上千段是播一段取一段的,右鍵另存自然拿不到。
這麼做是為了讓影片能隨網速自動換畫質、能從中間點開就放。對網站是好事, 對想把影片存下來的人就多了一道手續:得先拿到清單,照著清單把每一段取回來,再按順序拼成一個檔案。
VGrab 是怎麼做的
裝上擴充功能之後不用開任何開關。你照常開啟影片頁面、點播放,擴充功能在後台看著這一頁發出去的請求, 認出裡面的清單和影片檔案。圖示右下角會顯示這一頁發現了幾條。
- 點一下擴充功能圖示。這一頁裡能下的都列出來了,最像正片的排在最前面 —— 廣告片段、迴圈的背景影片、預告片這些會被排到後面去。
- 畫質已經挑好了。預設 480P;這部片子沒有 480P 這一檔,就挑最接近的那一檔, 彈出視窗上寫的是實際用的那一檔,不會讓你以為下到的是 480P。想換,點一下就能換。
- 點儲存。剩下的事擴充功能自己做:把清單裡的每一段取回來,按順序拼成一個檔案,存進下載資料夾。
拼出來的是什麼檔案
分片流下完拼成一個 .mp4。這裡只換外殼、不重新編碼 ——
畫面和聲音的資料原樣搬過去,所以又快又不掉畫質,也不需要裝 ffmpeg 之類的東西。
極少數換不成外殼的會存成 .ts,彈出視窗裡會寫清楚為什麼。
檔案存在瀏覽器的下載資料夾裡,按影片網站的網域分子資料夾,檔名用影片標題。 電腦、手機上的播放器都能直接播,能拖進度條。
幾種會讓人卡住的情況
片段是加密的。清單裡帶 EXT-X-KEY 的 AES-128 加密流照樣能下 ——
金鑰就放在清單指的那個網址上,取到金鑰解開它本來就是正常播放的一部分。
畫面和聲音是兩條軌。有些網站(尤其是 DASH 那一類)把畫面和聲音分開傳。 兩條軌都找得到時,擴充功能會把它們合成一個檔案;只拿到一條會如實說,不會默默給你一個沒聲音的檔案。
網站限速。同一個網址取得太密,網站會開始拒絕。這時擴充功能會自己放慢、只留一路慢慢下, 而不是一直重試把網站給的額度耗光。真的等了十分鐘一點進展都沒有,才會停下來告訴你, 過一會兒點「繼續」,從停下的那一段接上。
網斷了。下好的片段都在本機存著。斷在 87%,接著下就是從 87% 開始,不會從頭再來。