yt-dlp 字幕操作技术手册
1. 格式对比与技术规范
| 特性 | VTT (WebVTT) | SRT (SubRip) |
|---|---|---|
| 标准定义 | W3C 标准,HTML5 原生字幕格式。 | 社区标准,源自 DVD 翻录。 |
| 文件头 | 必须包含 WEBVTT 头声明。 | 无文件头,直接以序号开头。 |
| 时间戳格式 | HH:MM:SS.mmm (使用点号 .)。 | HH:MM:SS,mmm (使用逗号 ,)。 |
| 排版能力 | 强。支持 CSS 样式、屏幕坐标定位 (line:80%)、文本对齐、卡拉OK特效。 | 弱。仅支持基础文本修饰 (<b>, <i>, <u>)。 |
| 兼容性 | 现代 Web 浏览器、PotPlayer/MPV 等现代播放器。 | 极高。支持几乎所有硬件播放器、电视及非编软件 (PR/FCPX)。 |
| 转换损耗 | N/A (作为源格式)。 | 有损。转换时将丢弃坐标、层级及复杂样式信息。 |
2. 核心指令集
2.1 基础下载
下载视频默认提供的最高质量字幕(通常为 VTT)。
yt-dlp --write-subs [URL]
2.2 下载并转换格式
下载 VTT 后调用 FFmpeg 转换为 SRT,默认删除原始 VTT。
yt-dlp --write-subs --convert-subs srt [URL]
2.3 双格式保留策略 (VTT + SRT)
利用 -k (--keep-video) 保留后处理前的中间文件。
yt-dlp --write-subs --convert-subs srt -k [URL]
⚠️ 副作用警告:
-k会保留所有中间文件。如果视频流与音频流是分离下载的(如 1080p+),此命令也会导致未合并的视频流 (.mp4) 和音频流 (.m4a) 被保留在磁盘上。
2.4 下载自动生成字幕
下载 YouTube AI 自动识别生成的字幕(Auto-generated)。
yt-dlp --write-auto-subs [URL]
- 组合技:同时获取人工上传(优先)和自动生成(备选):
--write-subs --write-auto-subs
3. 多语言控制
yt-dlp 默认下载 API 返回列表中的首选语言,建议显式指定。
3.1 查看可用语言
在下载前检索视频提供的所有字幕轨道。
yt-dlp --list-subs [URL]
3.2 指定特定语言
使用 --sub-langs 参数,支持正则表达式 (Regex)。
- 仅下载中文 (包含简/繁/港/台):
--sub-langs "zh.*" - 同时下载英文和中文:
--sub-langs "en.*,zh.*" - 下载所有语言:
--sub-langs all - 排除特定语言 (例:排除 live_chat):
--sub-langs "all,-live_chat"
4. 最佳实践组合命令
场景: 下载中文和英文字幕(含自动生成),转换为 SRT 以获得最大兼容性,同时保留原始 VTT 以备归档,并接受可能产生的中间音视频文件残留。
yt-dlp --write-subs --write-auto-subs \
--sub-langs "en.*,zh.*" \
--convert-subs srt \
-k \
[URL]
--
5. ffmpeg 转换字幕格式
vtt 转换为 srt 格式
ffmpeg -i input.vtt output.srt