跳到正文
yt-dlp

下载 YouTube 字幕 — yt-dlp 命令生成器

生成一条只把字幕存成 .srt、而不下载视频的 yt-dlp 命令。

可选。留空的话命令会以 URL 结尾,由你自己填。

你的命令

yt-dlp --write-subs --convert-subs srt --sub-langs en --write-auto-subs --no-playlist -s 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
基本

仅音频会提取声音轨并丢弃视频流。

视频与画质

限制高度上限。yt-dlp 仍会挑选该上限及以下最好的一路流。

把分离的视频流和音频流合并进去的文件类型。

高级选项(3)

会取代画质下拉框。适合已经熟悉 format 语法的人。

不重新编码,只重新封装。快且无损。

重新编码视频。慢且有损 —— 只在 remux 不行时才用。

音频

音频要转换成的文件类型。

VBR 的体积与质量之比最好;固定 bitrate 更容易预估大小。

字幕

内嵌会把字幕放进视频里;保存则在旁边写一个独立的 .srt 文件。

用逗号分隔。想要所有可用语言就写 all。

播放列表与频道

当网址同时属于一个视频和一个播放列表时该怎么做。

范围和列表都可以,例如 1-10,15,或者用 -5::2 表示从末尾开始每隔一项取一项。

高级选项(1)

记下已经下过的项,于是重新运行会跳过它们。这就是让一个频道保持同步的办法。

片段与章节
高级选项(2)

像 *00:01:30-00:03:00 这样的时间范围,或者章节名。开头的星号表示这是时间戳。

元数据与封面
高级选项(3)
SponsorBlock

依据 SponsorBlock 数据,把社区标记的片段从文件里直接剪掉。

高级选项(1)

片段保留,但会被标出来,让你自己跳过。

文件与目录

字段名写在 %(...)s 里。斜杠会创建目录。

高级选项(4)

文件写到哪里。配合上面的模板可以生成子目录。

文件名最大长度,按字符计。

筛选
高级选项(5)

YYYYMMDD,或者像 now-1month 这样的相对日期。

YYYYMMDD,或者相对日期。

跳过更小的文件。可以写 5M、500K 之类。

跳过更大的文件。

停下来之前要下载的文件数量。

网络

例如 2M 或 500K。当你需要把余下带宽留给别的事情时很有用。

高级选项(5)

能加快分片流的下载。从 4 开始比较合适。

失败的分片要重试几次。也可以写 infinite。

HTTP、HTTPS 或 SOCKS proxy 的地址。

让请求看起来来自真实浏览器。突然出现 403 时,这是最常见的解法。

登录与 cookies

直接读取你的登录会话。私密、年龄限制或会员专属内容都需要它。

高级选项(1)

从浏览器导出的 Netscape 格式 cookies.txt。

直播
高级选项(2)

反复检查直到预定的直播开始。MIN-MAX 是两次检查之间的秒数。

故障绕行
高级选项(3)

已弃用,应改用 --add-headers。之所以保留,是因为很多旧教程还在用它。

已弃用,应改用 --add-headers。

按站点区分的专用选项,例如 youtube:player_client=web。

输出与调试
高级选项(2)
重置

只要字幕不要视频

模拟运行会做除了写视频文件之外的一切,所以你留下字幕、省掉下载。转成 SRT 需要 ffmpeg。

如果什么都没出现,最可能是这个视频根本没有人工字幕 —— 自动生成字幕是另一个开关,不打开它 yt-dlp 就找不到东西,而且也什么都不说。

模拟运行是本页承重的开关:不开,yt-dlp 会下载整条视频、顺带把字幕也存了——对一部电影长度的文件来说,为了一条文字轨做这么多传输很亏。开了,运行只取元数据、写字幕文件,完全不碰视频。代价是模拟运行也会跳过你可能习惯的缩略图和描述写入——那些是视频运行的产物,不是字幕的。

语言选择是字幕下载开始烦琐的地方。--sub-langs en 只取标着 "en" 的那条轨;en-orig 是 YouTube 对自动生成那条的叫法,而作为模式的 en.* 会连两者连同地区变体一起抓到。多语言用逗号分隔的列表。同一条视频对同一语言同时有人工轨和自动轨时,它们是两个独立条目,两个都下载是正当的结果,不是 bug。

字幕文件要进剪辑软件时,格式就讲究了:SRT 是安全的交换格式,VTT 带着网页播放器会显示的样式,YouTube 自家的 JSON3/_SRV 格式是给机器用的。转 SRT 开关处理最常见的情况,需要 ffmpeg,并有意丢掉样式——剪辑软件要的是文字,不是标记。如果输出看起来是空的,先确认文件存在再认定转换失败:一个 0 字节的 SRT 说明那条轨本来就是空的。

自动生成字幕值得一记警告:它是机器转写,随之而来的是一切——错的同音字、没有标点、被搅碎的人名。对一条你能读懂的语言的视频,它是个搜索索引;对任何要被引用的东西,值得留下的只有人工那条轨(如果有)。直播会实时生成自动字幕,只在直播结束后才能存下来——本站的直播录制选项是给画面用的,已结束直播的字幕用普通字幕选项下载。

常见问题

怎么只下字幕、不下视频?
选 .srt 选项并打开模拟运行,它会跳过写入视频文件,但仍然保存字幕。
为什么没有出现字幕文件?
这个视频很可能没有人工字幕。打开自动生成字幕,就能拿到机器生成的那一份。
怎么挑字幕语言?
用逗号分隔,例如 en,zh。想要全部可用语言就写 all,或者用 en.* 这样的模式匹配所有英文变体。
能要 SRT 而不是 VTT 吗?
能 —— .srt 选项会转换它们,这需要 ffmpeg。