一款非常好用的基于命令行的Youtube视频下载工具
系统要求
- youtube-dl
- ffmpeg 下载的音视频需要利用 ffmpeg 进行合并(youtube-dl 会自动调用)
sudo apt install youtube-dl ffmpeg
获取目标地址音视频列表¶
youtube-dl -F [url]
youtube-dl --list-formats [url]
例如
youtube-dl -F https://www.youtube.com/watch?v=pl1kcv780cY
[youtube] pl1kcv780cY: Downloading webpage
[youtube] pl1kcv780cY: Downloading video info webpage
[info] Available formats for pl1kcv780cY:
format code extension resolution note
249 webm audio only DASH audio 63k , opus @ 50k, 1.21MiB
250 webm audio only DASH audio 81k , opus @ 70k, 1.58MiB
140 m4a audio only DASH audio 127k , m4a_dash container, mp4a.40.2@128k, 3.00MiB
171 webm audio only DASH audio 137k , vorbis@128k, 2.91MiB
251 webm audio only DASH audio 152k , opus @160k, 3.09MiB
278 webm 256x144 144p 97k , webm container, vp9, 24fps, video only, 2.11MiB
160 mp4 256x144 144p 112k , avc1.4d400c, 24fps, video only, 1.70MiB
242 webm 426x240 240p 225k , vp9, 24fps, video only, 4.36MiB
133 mp4 426x240 240p 248k , avc1.4d4015, 24fps, video only, 3.35MiB
243 webm 640x360 360p 406k , vp9, 24fps, video only, 7.97MiB
134 mp4 640x360 360p 637k , avc1.4d401e, 24fps, video only, 8.99MiB
244 webm 854x480 480p 760k , vp9, 24fps, video only, 14.19MiB
135 mp4 854x480 480p 1181k , avc1.4d401e, 24fps, video only, 17.83MiB
247 webm 1280x720 720p 1518k , vp9, 24fps, video only, 28.22MiB
136 mp4 1280x720 720p 2363k , avc1.4d401f, 24fps, video only, 33.14MiB
248 webm 1920x1080 1080p 2700k , vp9, 24fps, video only, 50.37MiB
137 mp4 1920x1080 1080p 4397k , avc1.640028, 24fps, video only, 59.62MiB
271 webm 2560x1440 1440p 8920k , vp9, 24fps, video only, 142.21MiB
313 webm 3840x2160 2160p 17971k , vp9, 24fps, video only, 351.16MiB
17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k, 1.82MiB
36 3gp 320x180 small , mp4v.20.3, mp4a.40.2, 5.10MiB
18 mp4 640x360 medium , avc1.42001E, mp4a.40.2@ 96k, 14.80MiB
43 webm 640x360 medium , vp8.0, vorbis@128k, 20.43MiB
22 mp4 1280x720 hd720 , avc1.64001F, mp4a.40.2@192k (best)
按指定代码组合下载¶
youtube-dl -f [format code] [url]
例如
youtube-dl -f 136+140 https://www.youtube.com/watch?v=8VkpDCD6fms
youtube-dl 会自动调用FFMPEG合并音频和视频[如果可以的话]
字幕¶
只下载字幕¶
youtube-dl --write-sub --skip-download [url] //下载单独的 vtt 字幕文件,而不下载视频
youtube-dl --write-sub --all-subs --skip-download [url] //下载所有语言的字幕 (如果有的话)
youtube-dl --write-auto-sub --skip-download [url] //下载自动生成的字幕 (YouTube only)
将下载的字幕与视频进行合并¶
- 硬字幕(字幕为画面一部分)
- 软字幕(可选择打开关闭字幕)
硬字幕¶
先将 vtt 字幕转换为 ass 字幕
ffmpeg -i subtitle.vtt subtitle.ass
合并字幕和视频
ffmpeg -i video.mp4 -vf ass=subtitle.ass out.mp4
软字幕¶
ffmpeg -i video.mp4 -i subtitle.vtt -c copy -c:s mov_text out.mp4
下载并同时嵌入字幕¶
使用--write-sub
下载,并使用--embed-subs
嵌入
youtube-dl --write-sub --embed-subs --sub-lang en_US,en-US,en https://www.youtube.com/watch?v=6wy1CP-mM08
一些选项:
- --sub-lang 字幕语言
- --all-subs 下载所有字幕
- --list-subs 列出所有的字幕
如果需要下载并同时嵌入自动生成的字幕,使用--write-auto-sub
youtube-dl --write-auto-sub --embed-subs -f https://www.youtube.com/watch?v=6wy1CP-mM08
参考: https://forum.manjaro.org/t/how-to-download-a-video-from-youtube-with-captions-solved/81046/6
使用 aria2 多线程下载¶
有时下载速度不理想,可以考虑利用多线程加速下载
安装
sudo apt-get install aria2
多线程下载
youtube-dl [url] --external-downloader aria2c --external-downloader-args "-x 16 -k 1M"
参数说明
--external-downloader aria2c //调用外部下载工具
--external-downloader-args //外部下载工具指定参数
-x 16 //启用aria2 16个线程,最多就支持16线程
-K 1M //指定块的大小
实测在VPS上效果并不好,没有直接使用youtube-dl速度块,可能本地下载使用aria2会有提升,抑或是VPS上的aria2没有设置DHT文件
下载视频列表中的视频¶
使用参数 -cit [list url]
如下
youtube-dl -cit https://www.youtube.com/playlist\?list\=PLCJcQMZOafICYrx7zhFu_RWHRZqpB8fIW
其中PLCJcQMZOafICYrx7zhFu_RWHRZqpB8fIW
便是视频列表的代码
一般在YouTube中打开一个视频列表,网页会播放其默认index的视频,网址类似这样
https://www.youtube.com/watch?v=G3A7q8ASsO0&list=PLPZ7h6L6LC7V_aSrf9EPFJlXZOQRv22pb
其中&list=
后面的PLPZ7h6L6LC7V_aSrf9EPFJlXZOQRv22pb
即为视频列表代码
如果想要下载的是正在更新的列表,可以使用--playlist-start
--playlist-end
参数指定开头和结尾,例如
youtube-dl -f 299+140 -cit --playlist-start 3 https://www.youtube.com/playlist\?list\=PLPZ7h6L6LC7UvH8KfJnP95p099QO_jvxI
其他参数¶
-o
指定目标文件路径--proxy
指定代理e
获取目标视频标题
youtube-dl -o [PATH] --proxy [PROXY] [url]
youtube-dl -e [url]
例如
youtube-dl -f 136+140 -o ~/usr/download.mp4 -- proxy 127.0.0.1:8087 https://www.youtube.com/watch?v=8VkpDCD6fms
注意事项¶
使用 pip
安装FFMPEG 后还需要下载编译包并将bin
等路径添加到 PATH
中[windows 环境下]
Linux 环境下使用 apt-get
安装即可