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 注释区 |
为什么需要转换?
- SRT 转 VTT:当你的前端团队需要使用 HTML5
<video>标签的<track>属性来原生挂载网页字幕时,浏览器通常只认 WebVTT。 - VTT 转 SRT:许多传统的 NLE(非线性编辑软件如早期的 Premiere)或某些老型号的智能电视机,对 VTT 的兼容性较差,需要更通用的 SRT 作为备用素材。
手工转换步骤 (SRT -> VTT)
如果你只是临时需要转换一个小文件,可以直接按照以下三步通过记事本/VS Code 修改:
- 追加文件头:在文件最顶端的第 1 行输入
WEBVTT,然后敲两个回车键(空两行)。 - 替换时间戳分隔符:利用文本编辑器的“查找和替换”功能,查找
,(逗号),不过要小心,只替换时间戳部分的逗号为.(小数点)。不要把正常中文短句里的逗号也换掉了。 建议使用正则表达式替换:查找(\d{2}):(\d{2}):(\d{2}),(\d{3}),替换为$1:$2:$3.$4。 - 另存为:将文件的扩展名从
.srt改为.vtt,务必检查编码是否强制选中了 UTF-8 (无 BOM)。
ZiZhun 格式跨界解析的优势
尽管手动转换并不复杂,但在面对动辄上千行、甚至包含特殊样式(粗斜体/颜色代码)的长视频字幕时,跨格式的正则替换极其容易引发破损。
在 ZiZhun 引擎 内核中,我们并不强制要求您预先转换格式。无论是 .srt 还是 .vtt,一旦拖入系统,ZiZhun 统一将其序列化为抽象的 JSON 节点树进行错误检测与 R1~R3 规则过滤。
未来我们会为所有通过故障修复的数据提供多合一导出功能 —— 只需在上游投喂任意格式,点击修复后的安全产物可一键打包为 SRT 与 WebVTT 双版副本。