最簡單的辦法,就是利用各種網盤搜尋,找到網盤的分享位址,轉存到自己的網盤,然後下載下傳。這樣就避免了從線上視訊網站直接下載下傳,而且常常清晰度比較高。
如果網盤找不到,第二種辦法是利用一些線上視訊的解析網站。隻要把視訊的網址輸進去,就能解析出下載下傳位址,也很簡單。大的視訊網站如B站,優酷等都有解析網站。不過,現在的視訊網站經常調整,是以解析也常常失效。
第三種辦法是利用某些工具。我比較常用的是you-get和youtube-dl,都是用python編寫的,開放源代碼,可以根據自己的需求修改。youtube-dl的功能更為強大,支援的網站也更多。但某些功能做的太繁瑣,用起來不太友善,比如下載下傳字幕,挑選清晰度等。you-get在這些方面比較友善些,同時程式較小,改起來也友善些。
第四種辦法是直接檢視網頁的源代碼,找到下載下傳位址。某些視訊網站如西瓜視訊可以這樣做。
第五種辦法是設法擷取到m3u8下載下傳清單,然後再下載下傳。如果得到了m3u8的網址,可以用某些m3u8專用下載下傳工具下載下傳,試過一兩種,感覺都不理想,不是速度太慢,就是操作繁瑣。
可以用youtube-dl直接下載下傳:youtube-dl <m3u8的url>。友善是友善,但因為實質是利用ffmpeg來下載下傳(那些m3u8專用下載下傳工具估計有的也是這樣的),大概是單線程的,一是速度比較慢,二是如果出錯,又得重來。是以我一般都是手工下載下傳m3u8檔案後再用下載下傳工具如Internet Download Manager之類下載下傳視訊檔案,然後再用ffmpeg拼成單個檔案。
手工下載下傳了m3u8檔案,如果想偷懶,可以直接在指令行輸入ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i index.m3u8 -c copy my_movie.ts下載下傳,優缺點和上面用youtube-dl下載下傳m3u8是一樣的。
手工操作的話,第一步是下載下傳m3u8檔案。有個不錯的工具,chrome浏覽器的插件hls downloader,可以自動捕捉到m3u8的網址,用起來比較友善。如果手工擷取,可以點選chrome浏覽器的Network頁,然後找出含有m3u8的網址,再手工下載下傳。
下載下傳到的m3u8檔案,主要有兩種。一種有完整的播放清單,一種隻有一個m3u8的位址:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,RESOLUTION=1280x720
/foo/bar/index.m3u8
這個需要在Network頁裡随便找個視訊片斷的網址,比如是https://foo.com/1.ts,然後拼接出完整的m3u8網址https://foo.com/foo/bar/index.m3u8,手工下載下傳,才得到完整的播放清單。
得到播放清單後,首先用程式轉成便于下載下傳工具導入的清單檔案:
播放清單裡的視訊檔案名大緻有兩種,一種是有規律的,如foo_001.ts, foo_002.ts等,這種相對友善一些,一種沒有規律,比如N3Atb.ts,2BjMl.ts等,這種會給下一步的合并檔案帶來困難(如果直接用ffmpeg下載下傳沒有這個問題,但手工操作就有問題)。一個辦法是利用DownthemAll這個插件,寫段程式生成它專用的下載下傳清單:
不過因為downthemall的下載下傳速度不快,是以這個方法我也不常用,一般是先用其他下載下傳工具下載下傳完視訊檔案後,再用下面的程式給檔案重命名:
某些m3u8裡的視訊檔案是加密的,下載下傳的ts檔案用播放器無法直接打開。一般是檔案中有段:
#EXT-X-KEY:METHOD=AES-128,URI="https://foo.com/key.key"
這種需要先從這個網址手工下載下傳key.key檔案,然後用下面的程式解密:
值得注意的是某些加密視訊中夾有一段不加密的廣告。我一般是手工删除這些廣告後再解密。
最後一步是合并下載下傳到的視訊檔案。我一般是用個dos批處理檔案來處理:
pause的作用是生成檔案清單後,有個手工調整的機會。某些情況下,比如有1.ts,2.ts......10.ts檔案,正确的次序是從1到10,但是這個批處理有可能将10.ts排在1.ts的後面,是以需要手工調整。
需要注意的是某些m3u8檔案中有EXT-X-DISCONTINUITY标記,這時用ffmpeg合并時有時會出錯。我也沒有什麼好辦法 ,隻能将視訊拆成兩三段,相當于上下或者上中下集,分段數不太多的話 ,尚可接受。
大緻的下載下傳方法就這些,另外吐槽一下下載下傳工具。
IDM大概是最強悍的。不過,下載下傳m3u8裡的視訊檔案也優勢不大,因為檔案都很小,還沒加速,已經下載下傳完了。
Free Download Manager設計怪異,先要得到每個檔案的大小,然後再下載下傳;導入下載下傳清單後莫名其妙地建立一個目錄。導入下載下傳清單速度巨慢。
Download Accelerator Manager導入下載下傳清單很快,下載下傳速度也很快,但是,每下載下傳一個檔案就跳出來一個視窗,自動成為活動視窗。如果隻是下載下傳幾個檔案還好 ,但m3u8動不動就上千個檔案,而且每個檔案都很小,結果是不停地彈出視窗,别的事都幹不了了。如果不要彈出視窗,需要掏錢買Ultimate版,看來是故意設計成這樣的,很惡心。
Flashget,老牌的下載下傳工具,不知為什麼3.0新版去掉了老版的導入txt下載下傳清單的功能,隻能導入jcd或者db檔案,巨惡心。而且導入速度巨慢,試着導入2000個檔案的下載下傳清單,等了幾分鐘都沒反應。
uGet設計更怪異。同時下載下傳任務數,預設下載下傳目錄等設定都必須建立一個Category,然後在Category裡設定,很不intuitive。另外,問答框居然把No放前面,Yes放後面,反人性的設計。
DownthemAll其他設計都不錯,mask的設計更是獨一無二,非常強大,實用。缺點是不支援導入txt下載下傳清單,另外下載下傳速度也不太快。