2 min read

youtube-dl 开源命令行下载工具

显然 youtube-dl 是一款下载 Youtube 视频的工具,不过它是命令行下的工具,采用 Python 开发。另外,它具备跨平台支持,所有 Windows/Mac OS X/Linux 都可以使用。

项目仓库:https://github.com/ytdl-org/youtube-dl

安装

这里以 Linux 为例,采用 PIP 安装。

$ pip install youtube-dl

更新时添加一个 --upgrade 参数即可。

使用

最简单的用法就是命令后面直接添加 URL,会自动下载视频的最高质量版本,文件格式默认是谷歌自家的 webm。这里有个前提就是你的网络可以畅通无阻的访问 Youtube。

$ youtube-dl https://www.youtube.com/watch?v=ABCDEFGXXXXXX

列出支持的网站

$ youtube-dl --list-extractors

查看所有可下载的文件格式

$ youtube-dl -F https://www.youtube.com/watch?v=ABCDEFGXXXXXX

下载指定格式(代码)的文件

$ youtube-dl -f 136 https://www.youtube.com/watch?v=ABCDEFGXXXXXX

配置文件

全局配置文件 /etc/youtube-dl.conf,用户配置文件 ~/.config/youtube-dl/config,程序会自动从上述位置读取配置,根据需要创建一个即可。

配置文件中定义规则与命令行中保持一致,一行一个参数,# 号开头的行为注释。

例如:

$ cat .config/youtube-dl/config 
# 配置代理
--proxy socks://127.0.0.1:1080

# 保存路径及文件名规则
-o ~/视频/youtube-dl/%(title)s.%(ext)s

常见问题

音视频合并

需要先安装 ffmpeg,否则无法完成音视频合并。

很多时候,在 youtube 上的视频会分为音频文件和视频文件,往往并没有提供指定清晰度的带音频的视频文件。这种情况可以通过以下方式给定参数分别下载特定质量的音频和视频文件,然后自动合并成一个所需格式的视频文件:

$ youtube-dl -f 'bestvideo[height=1080,ext=mp4]+bestaudio[ext=m4a]' --merge-output-format mp4 

以上命令将会下载 mp4 格式,清晰度为1080p的视频文件和质量最好的m4a格式的音频文件,最后将二者合并成 mp4 文件。

使用本机 hls 下载器

解决一些网站视频无法下载的问题

--hls-prefer-native

使用 aria2 加速下载

–external-downloader aria2c 
–external-downloader-args "-x 16 -k 1M"
  • -x 是线程数,最大为 16,应该根据 CPU 核数灵活调整;
  • -k 是数据块大小

限制下载速度

-r, --limit-rate RATE                Maximum download rate in bytes per
                                     second (e.g. 50K or 4.2M)