youtube-dl
youtube-dl是一个命令行工具,可以用来下载youtube视频、字幕、以及封面
提示
随着网页版工具msubs.sakana.systems的全面推出,你可以在网页上直接下载视频。 以下内容仅供存档。
警告
youtube-dl目前有些问题,请采用 yt-dlp。将所有 youtube-dl 换为 yt-dlp 即可,安装方式也相同。
安装
安装完python后,使用指令 pip install youtube-dl 即可安装。之后在命令行中使用 youtube-dl 即可。
如果使用的是Anaconda,你可能想将youtube-dl安装在某个特定环境中。使用 conda install youtube-dl 安装,
并在开始菜单中,使用Anaconda Prompt打开环境,并使用youtube-dl
使用
youtube-dl是一个命令行工具,需要在命令提示符中运行。 首先进入目标文件夹,按住Shift并右键,选择“在此处打开命令提示符”(或者“在此处打开Powershell窗口”)。
在最简单的情况下给定一个URL即可下载。不过一般需要指定格式。URL可以是完整的URL(比如 https://www.youtube.com/watch?v=YmFufMFGlYM), 可以是直接从Youtube分享出来的短URL(比如 https://youtu.be/YmFufMFGlYM),也可以直接用视频的ID(比如 YmFufMFGlYM)
以下是一些常用的参数:
参数 |
意义 |
示例 |
|---|---|---|
|
指定下载的格式、分辨率 |
|
|
列出该视频的所有格式并退出(忽略其它参数) |
|
|
不下载视频(如果指定的话,仍然会下载封面、字幕和简介) |
|
|
同时下载封面 |
|
|
同时下载视频简介 |
|
|
下载自动字幕 格式默认为vtt |
|
|
列出可选的字幕格式及语言并退出,忽略其它参数 |
|
|
选择下载的字幕格式。一般有vtt, vtt2, srt |
|
|
对下载的视频重编码。格式自定,mp4 avi 估计rmvb都行虽然我没试过 |
|
|
使用代理。支持SOCK5,HTTP,HTTPS |
|
指定格式 (-f) 的示例
使用-F列出格式,你会看到类似以下的结果
[youtube] YmFufMFGlYM: Downloading webpage
[info] Available formats for YmFufMFGlYM:
format code extension resolution note
249 webm audio only tiny 52k , opus @ 50k (48000Hz), 2.09MiB
250 webm audio only tiny 69k , opus @ 70k (48000Hz), 2.63MiB
251 webm audio only tiny 123k , opus @160k (48000Hz), 4.73MiB
140 m4a audio only tiny 130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 5.33MiB
278 webm 256x144 144p 97k , webm container, vp9, 30fps, video only, 3.45MiB
160 mp4 256x144 144p 120k , avc1.4d400c, 30fps, video only, 2.90MiB
242 webm 426x240 240p 205k , vp9, 30fps, video only, 5.10MiB
133 mp4 426x240 240p 265k , avc1.4d4015, 30fps, video only, 6.75MiB
243 webm 640x360 360p 372k , vp9, 30fps, video only, 9.49MiB
134 mp4 640x360 360p 559k , avc1.4d401e, 30fps, video only, 12.75MiB
244 webm 854x480 480p 608k , vp9, 30fps, video only, 16.08MiB
135 mp4 854x480 480p 951k , avc1.4d401f, 30fps, video only, 22.70MiB
247 webm 1280x720 720p 1241k , vp9, 30fps, video only, 32.27MiB
136 mp4 1280x720 720p 1904k , avc1.64001f, 30fps, video only, 43.69MiB
248 webm 1920x1080 1080p 2125k , vp9, 30fps, video only, 57.26MiB
137 mp4 1920x1080 1080p 3624k , avc1.640028, 30fps, video only, 82.13MiB
271 webm 2560x1440 1440p 5732k , vp9, 30fps, video only, 140.56MiB
313 webm 3840x2160 2160p 17602k , vp9, 30fps, video only, 541.27MiB
18 mp4 640x360 360p 469k , avc1.42001E, 30fps, mp4a.40.2@ 96k (44100Hz), 19.30MiB
22 mp4 1280x720 720p 1190k , avc1.64001F, 30fps, mp4a.40.2@192k (44100Hz) (best)
每一行以一个format code开头,然后是格式,分辨率和描述。从resolution和描述可以看出,前四个格式都只有音频。 而大部分的视频都没有音频(在note中标注video only),除了最后两个1280x720和640x360的视频,代码分别为18和22。
有多种方式指定下载的格式,如下:
使用best。此时youtube-dl会寻找最佳的,音视频都有的格式。在此例中会选择22,1280x720的视频。
使用bestvideo+bestaudio,寻找最佳视频+最佳音频,并使用ffmpeg组合,选择的标准是文件大小最大。在此例中会选择313+140。
使用format code,例如313+251。 直接指定想要的格式。必须先指定视频,再指定音频。
下载下来的文件扩展名和格式有关。如果选择的音视频extension都是mp4或m4a,组合出来的文件是mp4。如果其中有webm,组合出来的文件是webm.
值得注意的是format code对于所有视频都是一样的。也就是说,无论下载的是什么视频,format code 313 永远是4K分辨率的vp9编码,webm视频。
如果指定的视频没有4K分辨率,那么format code 313就不存在,也不会出现在 -F 的列表中。尝试下载313会报错。
常用选项
备注
此内容为MetricSubs特有。在他组时请多确认
youtube-dl -f 137+140 [URL]下载1080p格式的MP4视频。 一般用途是当别人已经打轴/翻译完成,字幕文件已经创建时,单独下载一个视频以继续工作。
youtube-dl -f 137+140 --write-auto-sub --sub-format vtt --write-thumbnail [URL]下载1080p格式的MP4视频、封面及字幕。 下载1080p是因为它文件更小、适合组内传输。mp4格式可以直接进入Aegisub,且拖动时间轴时不会卡顿。
youtube-dl -f 313+251 [URL]下载4K格式的webm视频,压制用。
youtube-dl --skip-download --write-thumbnail [URL]只下载封面图片,不下载视频。 可能当初下载视频的人忘了下载封面,然后用这个补一下。