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)

以下是一些常用的参数:

参数

意义

示例

-f (--format) [格式]

指定下载的格式、分辨率

youtube-dl -f 313+251 [URL]

-F

列出该视频的所有格式并退出(忽略其它参数)

youtube-dl -F [URL]

--skip-download

不下载视频(如果指定的话,仍然会下载封面、字幕和简介)

youtube-dl --skip-download --write-thumbnail [URL]

--write-thumbnail

同时下载封面

youtube-dl --write-thumbnail [URL]

--write-description

同时下载视频简介

youtube-dl --write-description [URL]

--write-auto-sub

下载自动字幕 格式默认为vtt

youtube-dl --write-auto-sub [URL]

--list-subs

列出可选的字幕格式及语言并退出,忽略其它参数

youtube-dl --list-subs [URL]

--sub-format [格式]

选择下载的字幕格式。一般有vtt, vtt2, srt

youtube-dl --write-auto-sub --sub-format vtt [URL]

--recode-video [格式]

对下载的视频重编码。格式自定,mp4 avi 估计rmvb都行虽然我没试过

youtube-dl [URL] --recode-video mp4

--proxy [代理]

使用代理。支持SOCK5,HTTP,HTTPS

--proxy sock5://127.0.0.1:1080

指定格式 (-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]

只下载封面图片,不下载视频。 可能当初下载视频的人忘了下载封面,然后用这个补一下。