youtube-dl
Youtube-dl 簡稱視頻下載利器盔腔。同事 是一個命令行工具,對我所知的大部分視頻網(wǎng)站有不錯的支持,你可以選擇下載視頻辜伟,或是將視頻流直接導(dǎo)出到自己想使用的播放器中氓侧,也可以以JSON的形式獲取可下載資源的URL
安裝Youtube-dl
Youtube-dl 通過 PyPi 分發(fā),如果你的系統(tǒng)安裝有 pip3 或 pip 导狡,請直接使用:
brew install youtube-dl
安裝Youtube-dl
通過 Youtube-dl 下載視頻十分簡潔约巷,例如你需要下載 youtube-dl 'https://www.bilibili.com/video/av80476263'/ 直接這樣:
youtube-dl 'https://www.bilibili.com/video/av80476263'
終端輸出
[BiliBili] 80476263: Downloading webpage
[BiliBili] 80476263: Downloading video info page
[BiliBili] 80476263: Downloading webpage
[BiliBili] 80476263: Downloading video info page
[download] Destination: 2019總結(jié)1.flv
[download] 0.0% of 32.61MiB at Unknown speed [download] 0.0% of 32.61MiB at Unknown speed [download] 0.0% of 32.61MiB at 3.29MiB/s ETA[download] 0.0% of 32.61MiB at 421.13KiB/s ET[download] 0.1% of 32.61MiB at 798.04KiB/s ET[download] 0.2% of 32.61MiB at 848.61KiB/s ET[download] 0.4% of 32.61MiB at 1.13MiB/s ETA[download] 0.8% of 32.61MiB at 1.62MiB/s E
查看視頻的內(nèi)容,只看不下載
youtube-dl -F 'https://www.bilibili.com/video/av80476263'
使用代理下載
youtube-dl 提供了使用代理的參數(shù)旱捧,你可以簡單地shadow socket 在設(shè)置查看地址填入:
youtube-dl --proxy 127.0.0.1:1087 'https://www.youtube.com/watch?v=ghDOA4TeOQE'
查看幫助文檔
youtube-dl -h
原理:
現(xiàn)在主流視頻網(wǎng)站大部分都不是真實的mp4路徑独郎,而是一個M3U8地址。
- m3u8 文件實質(zhì)是若跟個TS為文件枚赡, 一個播放列表playlist氓癌。其內(nèi)是 utf-8 純文本文件。
- 選擇TS存儲 而不是 MP4存儲呢贫橙?這是因為兩個 TS 片段可以無縫拼接贪婉,播放器能連續(xù)播放,而 MP4 文件由于編碼方式的原因卢肃,兩段 MP4 不能無縫拼接疲迂,播放器連續(xù)播放兩個 MP4 文件會出現(xiàn)破音和畫面間斷,影響用戶體驗莫湘。
- 每次播放根據(jù)列表文件中的時間軸找出對應(yīng)的 TS 片段下載即可尤蒿,不需要 range request,對代理服務(wù)器的要求小很多幅垮。所有代理服務(wù)器都支持小文件的高效緩存腰池。