WebVTT 与 SRT 格式互转实操

2026-02-284 min read

在当前的视频流媒体生态中,SRT (SubRip) 和 WebVTT (Web Video Text Tracks) 占据着绝对的统治地位。从本地剪辑到云端分发,无论是创作者还是字幕组人员,都难免会遇到需要将这两种格式进行来回转换的场景。

SRT 与 WebVTT 的差异对比

虽然两者在人类肉眼看来都是纯文本,都由“时间戳 + 字幕内容”构成,但在底层标准上存在显著区别:

| 特性 | SRT | WebVTT | |---|---|---| | 标准背书 | 极简、开源但无官方标准 | W3C 官方推荐的 HTML5 标准 | | 首行标识 | 无需标识 | 强制首行必须有 WEBVTT 声明 | | 时间轴格式 | 00:00:01,000 (逗号) | 00:00:01.000 (句号/点号) | | 样式与定位 | 不支持标准样式代码 | 原生支持 CSS 类、粗斜体及屏幕坐标 | | 注释与元数据 | 会被作为字幕乱入画面 | 支持隐藏的 NOTE 注释区 |

为什么需要转换?

  1. SRT 转 VTT:当你的前端团队需要使用 HTML5 <video> 标签的 <track> 属性来原生挂载网页字幕时,浏览器通常只认 WebVTT。
  2. VTT 转 SRT:许多传统的 NLE(非线性编辑软件如早期的 Premiere)或某些老型号的智能电视机,对 VTT 的兼容性较差,需要更通用的 SRT 作为备用素材。

手工转换步骤 (SRT -> VTT)

如果你只是临时需要转换一个小文件,可以直接按照以下三步通过记事本/VS Code 修改:

  1. 追加文件头:在文件最顶端的第 1 行输入 WEBVTT,然后敲两个回车键(空两行)。
  2. 替换时间戳分隔符:利用文本编辑器的“查找和替换”功能,查找 ,(逗号),不过要小心,只替换时间戳部分的逗号为 .(小数点)。不要把正常中文短句里的逗号也换掉了。 建议使用正则表达式替换:查找 (\d{2}):(\d{2}):(\d{2}),(\d{3}),替换为 $1:$2:$3.$4
  3. 另存为:将文件的扩展名从 .srt 改为 .vtt,务必检查编码是否强制选中了 UTF-8 (无 BOM)

ZiZhun 格式跨界解析的优势

尽管手动转换并不复杂,但在面对动辄上千行、甚至包含特殊样式(粗斜体/颜色代码)的长视频字幕时,跨格式的正则替换极其容易引发破损。

ZiZhun 引擎 内核中,我们并不强制要求您预先转换格式。无论是 .srt 还是 .vtt,一旦拖入系统,ZiZhun 统一将其序列化为抽象的 JSON 节点树进行错误检测与 R1~R3 规则过滤。

未来我们会为所有通过故障修复的数据提供多合一导出功能 —— 只需在上游投喂任意格式,点击修复后的安全产物可一键打包为 SRT 与 WebVTT 双版副本。