下载 YouTube 字幕 — yt-dlp 命令生成器
生成一条只把字幕存成 .srt、而不下载视频的 yt-dlp 命令。
只要字幕不要视频
模拟运行会做除了写视频文件之外的一切,所以你留下字幕、省掉下载。转成 SRT 需要 ffmpeg。
如果什么都没出现,最可能是这个视频根本没有人工字幕 —— 自动生成字幕是另一个开关,不打开它 yt-dlp 就找不到东西,而且也什么都不说。
模拟运行是本页承重的开关:不开,yt-dlp 会下载整条视频、顺带把字幕也存了——对一部电影长度的文件来说,为了一条文字轨做这么多传输很亏。开了,运行只取元数据、写字幕文件,完全不碰视频。代价是模拟运行也会跳过你可能习惯的缩略图和描述写入——那些是视频运行的产物,不是字幕的。
语言选择是字幕下载开始烦琐的地方。--sub-langs en 只取标着 "en" 的那条轨;en-orig 是 YouTube 对自动生成那条的叫法,而作为模式的 en.* 会连两者连同地区变体一起抓到。多语言用逗号分隔的列表。同一条视频对同一语言同时有人工轨和自动轨时,它们是两个独立条目,两个都下载是正当的结果,不是 bug。
字幕文件要进剪辑软件时,格式就讲究了:SRT 是安全的交换格式,VTT 带着网页播放器会显示的样式,YouTube 自家的 JSON3/_SRV 格式是给机器用的。转 SRT 开关处理最常见的情况,需要 ffmpeg,并有意丢掉样式——剪辑软件要的是文字,不是标记。如果输出看起来是空的,先确认文件存在再认定转换失败:一个 0 字节的 SRT 说明那条轨本来就是空的。
自动生成字幕值得一记警告:它是机器转写,随之而来的是一切——错的同音字、没有标点、被搅碎的人名。对一条你能读懂的语言的视频,它是个搜索索引;对任何要被引用的东西,值得留下的只有人工那条轨(如果有)。直播会实时生成自动字幕,只在直播结束后才能存下来——本站的直播录制选项是给画面用的,已结束直播的字幕用普通字幕选项下载。