youtube-dl
Youtube-dl 簡(jiǎn)稱視頻下載利器。同事 是一個(gè)命令行工具,對(duì)我所知的大部分視頻網(wǎng)站有不錯(cuò)的支持,你可以選擇下載視頻,或是將視頻流直接導(dǎo)出到自己想使用的播放器中,也可以以JSON的形式獲取可下載資源的URL
安裝Youtube-dl
Youtube-dl 通過(guò) PyPi 分發(fā),如果你的系統(tǒng)安裝有 pip3 或 pip ,請(qǐng)直接使用:
brew install youtube-dl
安裝Youtube-dl
通過(guò) Youtube-dl 下載視頻十分簡(jiǎn)潔,例如你需要下載 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ù),你可以簡(jiǎn)單地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)站大部分都不是真實(shí)的mp4路徑,而是一個(gè)M3U8地址。
- m3u8 文件實(shí)質(zhì)是若跟個(gè)TS為文件, 一個(gè)播放列表playlist。其內(nèi)是 utf-8 純文本文件。
- 選擇TS存儲(chǔ) 而不是 MP4存儲(chǔ)呢?這是因?yàn)閮蓚€(gè) TS 片段可以無(wú)縫拼接,播放器能連續(xù)播放,而 MP4 文件由于編碼方式的原因,兩段 MP4 不能無(wú)縫拼接,播放器連續(xù)播放兩個(gè) MP4 文件會(huì)出現(xiàn)破音和畫(huà)面間斷,影響用戶體驗(yàn)。
- 每次播放根據(jù)列表文件中的時(shí)間軸找出對(duì)應(yīng)的 TS 片段下載即可,不需要 range request,對(duì)代理服務(wù)器的要求小很多。所有代理服務(wù)器都支持小文件的高效緩存。