Youtube-dl 这套强大的网络影片下载器,目前很多朋友可能会使用一些线上下载YouTube的网站,除了网页上满满的广告之外,还可能会常常遇到画质、音质不佳、下载速度慢,或是根本无法正常下载,毕竟 YouTube 也是随时在改版,虽然 Google 对于下载 YouTube 这件事算睁一只眼闭一只眼,但时不时还是会顺手防堵下载的漏洞。
而 youtube-dl 则是在 GitHub 上公开的开源软体,且他更新的频率相当惊人,几乎每隔几天就会更新,而更新内容大多都是针对各个影音网站的下载支持或功能修正。虽然 youtube-dl 没有 GUI,而是通过终端命令行操作,但非常轻量,且效率极佳。
安装 youtube-dl
请先安装 Homebrew,若你已经装好 Homebrew,则可以透过指令来安装 youtube-dl,打开终端并输入:
1 | brew install youtube-dl |
安装 ffmpeg
我们下载 YouTube 影片时可能会用到转档、嵌入字幕等功能,这些功能必须安装 ffmpeg 来达成。
1 | brew install ffmpeg |
运行
如上面所说,youtube-dl
没有GUI,而是通过终端操作,因此在应用程序里是找不到它的,必须使用终端来操作。
下载影片
在 macOS 中,终端预设目录是下载文件夹,但我们一般下载影片通常不会存在预设目录里,因此我们可以先指定下载目录。
选择好下载目录后,在终端输入 youtube-dl
,后跟 YouTube 影片网址即可下载,以下载 YouTube 影片 第五季 | 預告 Trailer【畫江湖之不良人 第5季 The Degenerate-Drawing Jianghu S5】 为例:
1 | [liudongkai@MBPR DIR]$ youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY' |
按下回车之后 youtube-dl
便开始下载,在没有设定任何下载选项的状况下,可以看到这支影片以预设的 WebM 格式下载到下载项目资料夹中。在 YouTube 下载影片,来源的影片文件可能是各种格式、分段或是影音分开,这时通常都是靠 ffmpeg 将其转换为单一的影片文件。
影片转档
刚刚下载的影片是 WebM 格式储存(有时可能是 mov 或 mkv 等等)不过其实 WebM 通常用于网页播放,我们一般在电脑、手机播放或剪辑,其实还是以 mp4 最通用。因此,我们可以在 youtube-dl 下载影片时,在指令后方加入 -f mp4 即可指定下载成 mp4 文件格式:
1 | youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY' -f mp4 |
所以 -f 后面的文件格式也可以换成 3gp、aac、flv、m4a、mp3、mp4、ogg、wav、webm 等等。
下载完成的文件,以 YouTube 来说,下载的文件名称就是 影片名称-影片网址的编号.文件格式,如上文案例文件名为:第五季 _ 預告 Trailer【畫江湖之不良人 第5季 The Degenerate-Drawing Jianghu S5】-aaIUjeg9MpY.mp4
。
指定最高质量下载
YouTube 通常会提供不同分辨率、不同码率的影片文件,我们可以通过指定编码序号进行下载。首先使用 -F
参数查看相关编码序号与质量(注意F为大写)
1 | [liudongkai@MBPR DIR]$ youtube-dl -F 'https://www.youtube.com/watch?v=aaIUjeg9MpY' |
查看输出列表,找到画质音质最好的序号,案例中1920x798分辨率下视频最好的是271,音频最好的是140,得到这两个序号后,可以通过 youtube-dl -f 视频序号+音频序号
进行合并下载,这样下载后,视频和音频会自动合并。
1 | [liudongkai@MBPR DIR]$ youtube-dl -f 271+140 'https://www.youtube.com/watch?v=aaIUjeg9MpY' |
注意:-f 后跟的两个序号需要必须先视频后音频
嵌入字幕
有时 YouTube 影片会有不同语言的 CC 字幕可选择,我们可以透过 youtube-dl
将字幕嵌入到影片中。
首先我们先列出可以下载的字幕,以上文案例为例,在 youtube-dl
下载指令后方加入 –list-subs
1 | youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY' --list-subs |
youtube-dl 分析 YouTube 网页后,在最下方 Available subtitles 列出可用的字幕包含:
- zh-CN
- en
- zh
- zh-TW
也就是简体中文、英文、中文、中文(台湾)这几种选择。
有关嵌入字幕的 youtube-dl 指令:
1 | --write-sub #下载字幕 |
因此如果我们要下载嵌入简体中文字幕的 mp4 影片,指令为:
1 | youtube-dl 'https://www.youtube.com/watch?v=aaIUjeg9MpY' --write-sub --embed-sub --sub-lang zh-CN -f mp4 |
支援嵌入字幕的影片格式包含:mp4、mkv 以及 webm;与格式工厂、HandBreak 那种将字幕直接写入在影片画面上的方式不同,使用 youtube-dl 嵌入的字幕是可以选择开启或关闭,以及选择不同语言的。此外,语系的代号大小写有别,必须一模一样,例如简体中文 zh-CN 的 CN 一定要是大写,非常重要!
下载完成后,以 QuickTime Player 打开,可以看到出现中文字幕的选项;若是以其他播放软体如 INNA 开启,也是可以选择字幕的,不过每个软件显示情况可能有所不同。
高级应用
指定格式以最优质量下载视频
1 | # 指定视频为mp4格式、音频为m4a格式以最优质量下载youtube视频,其它网站暂未测试,官方说Windows下换单引号为双引号 |
以最优质量下载音频
1 | # 默认下载音频为opus格式 |
下载播放列表中的视频
1 | # 使用默认,与下载单个视频格式一样 |
限定分辨率下载播放列表中的视频
1 | # 以最高480P下载列表第3个及以后的所有视频 |
下载播放列表中视频的音轨
1 | # 使用--playlist-start、--playlist-end、--playlist-items来限定 |
调用aria2加速下载
解决使用youtube-dl默认下载时常常断开连接的问题。
1 | youtube-dl --external-downloader aria2c --external-downloader-args "-x 16 -k 1M" 'https://www.youtube.com/watch?v=aaIUjeg9MpY' |
参数说明:
1 | --external-downloader aria2c # 调用外部下载工具 |
参考: