因为学习需要,产生了一个这样的需求:要从Youtube上批量下载视频。自然,出于方便使用的角度来看,音画不能分离,最好带有对应的字幕。一番搜罗之后,我找到了基于Python的开源产品: youtube-dl

值得一提的是,youtube-dl不仅仅能下载youtube上的视频,它支持的视频链接种类多达700+种,几乎囊括了所有在线视频网站,列表参见此处。让我不由得感慨开源的力量。除此以外,某些不存在的网址需要自备梯子,不再赘述。

获取

checked on 2015-12-18

Windows

Windows用户可以使用已经打包好的可执行程序:下载链接

UNIX like

类UNIX系统的用户可以使用curl或者wget来获取可执行文件

curl

sudo curl https://yt-dl.org/downloads/2015.12.13/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

wget

sudo wget https://yt-dl.org/downloads/2015.12.13/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

Homebrew

Homebrew用户可以使用如下命令进行安装:

brew install youtube-dl

pip

同样的,你也可以使用pip来安装它。

sudo pip install --upgrade youtube_dl

Source

自然,你可以选择下载源代码以及docs,链接见此

使用

简易

最简单的方式就是直接加上视频链接地址就可以自动下载到当前文件夹:

youtube-dl.exe url

使用代理

以常见的ss代理为例:

youtube-dl.exe url --proxy http://127.0.0.1:1080

有一个坑点在于这个参数只支持HTTP/HTTPS代理,所以本地跑SS的话,需要在前面加上一个HTTP的前缀,否则代理不会正常工作。

下载列表

以Youtube Playlist为例:

youtube-dl.exe --yes-playlist https://www.youtube.com/playlist?list=PLZlv_N0_O1gZg3dTMetmsfm_s4lb4-Tg0 --proxy http://127.0.0.1:1080

下载字幕

以Youtube Playlist为例,自动生成字幕并指定下载中文和英文字幕:

youtube-dl.exe --yes-playlist https://www.youtube.com/playlist?list=PLZlv_N0_O1gZg3dTMetmsfm_s4lb4-Tg0 --proxy http://127.0.0.1:1080 --write-auto-sub --sub-lang en,cn

字幕相关设定:

--write-sub                      写字幕文件
--write-auto-sub                 写入自动生成的字幕文件 (YouTube only)
--all-subs                       下载所有可提供的字幕
--list-subs                      列出当前视频支持的所有字幕
--sub-format FORMAT              指定字幕格式,比如 "srt" 或者 "ass/srt/best"
--sub-lang LANGS                 指定字幕语言,用`,`分隔, 使用 IETF 语言标记,比如 'en,pt'

IETF语言标记参见此处

更新日志

  • 2015年12月18日 首次发布