跳到主要内容

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