youtube-dl ========== youtube-dl是一个命令行工具,可以用来下载youtube视频、字幕、以及封面 .. hint:: 随着网页版工具msubs.sakana.systems的全面推出,你可以在网页上直接下载视频。 以下内容仅供存档。 .. warning:: youtube-dl目前有些问题,请采用 :code:`yt-dlp`。将所有 :code:`youtube-dl` 换为 :code:`yt-dlp` 即可,安装方式也相同。 安装 ---- 安装完python后,使用指令 :code:`pip install youtube-dl` 即可安装。之后在命令行中使用 :code:`youtube-dl` 即可。 如果使用的是Anaconda,你可能想将youtube-dl安装在某个特定环境中。使用 :code:`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) 以下是一些常用的参数: +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | 参数 | 意义 | 示例 | +===============================+================================================================+============================================================+ | :code:`-f (--format) [格式]` | 指定下载的格式、分辨率 | :code:`youtube-dl -f 313+251 [URL]` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`-F` | 列出该视频的所有格式并退出(忽略其它参数) | :code:`youtube-dl -F [URL]` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`--skip-download` | 不下载视频(如果指定的话,仍然会下载封面、字幕和简介) | :code:`youtube-dl --skip-download --write-thumbnail [URL]` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`--write-thumbnail` | 同时下载封面 | :code:`youtube-dl --write-thumbnail [URL]` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`--write-description` | 同时下载视频简介 | :code:`youtube-dl --write-description [URL]` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`--write-auto-sub` | 下载自动字幕 格式默认为vtt | :code:`youtube-dl --write-auto-sub [URL]` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`--list-subs` | 列出可选的字幕格式及语言并退出,忽略其它参数 | :code:`youtube-dl --list-subs [URL]` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`--sub-format [格式]` | 选择下载的字幕格式。一般有vtt, vtt2, srt | :code:`youtube-dl --write-auto-sub --sub-format vtt [URL]` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`--recode-video [格式]` | 对下载的视频重编码。格式自定,mp4 avi 估计rmvb都行虽然我没试过 | :code:`youtube-dl [URL] --recode-video mp4` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ | :code:`--proxy [代理]` | 使用代理。支持SOCK5,HTTP,HTTPS | :code:`--proxy sock5://127.0.0.1:1080` | +-------------------------------+----------------------------------------------------------------+------------------------------------------------------------+ 指定格式 (-f) 的示例 --------------------- 使用-F列出格式,你会看到类似以下的结果 .. code:: [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就不存在,也不会出现在 :code:`-F` 的列表中。尝试下载313会报错。 常用选项 -------- .. note:: 此内容为MetricSubs特有。在他组时请多确认 :code:`youtube-dl -f 137+140 [URL]` 下载1080p格式的MP4视频。 一般用途是当别人已经打轴/翻译完成,字幕文件已经创建时,单独下载一个视频以继续工作。 :code:`youtube-dl -f 137+140 --write-auto-sub --sub-format vtt --write-thumbnail [URL]` 下载1080p格式的MP4视频、封面及字幕。 下载1080p是因为它文件更小、适合组内传输。mp4格式可以直接进入Aegisub,且拖动时间轴时不会卡顿。 :code:`youtube-dl -f 313+251 [URL]` 下载4K格式的webm视频,压制用。 :code:`youtube-dl --skip-download --write-thumbnail [URL]` 只下载封面图片,不下载视频。 可能当初下载视频的人忘了下载封面,然后用这个补一下。