YamlBox

数据转换器 · 5 分钟阅读

SRT 到 VTT:浏览器实际加载的字幕

HTML5 视频元素会很高兴地忽略 SRT 文件:浏览器的 `<track>` 元素加载 WebVTT,而不加载其他内容。因此,将 SRT 转换为 VTT 是在网络上发布视频的常规步骤 - 并且两种格式之间的差异比您预期的要小,这正是为什么该转换值得理解而不是视为黑匣子的原因。

已更新

SRT 和 VTT 之间有什么变化

  • 标头 — WebVTT 文件以 `WEBVTT` 行开始,后面可以有一个标题。
  • 时间码 — SRT 在毫秒前写入 `00:00:12,500`,并带有逗号; VTT 用点写`00:00:12.500`。
  • 提示标识符——两者都允许在提示上方有一个可选名称; VTT 使它们对于脚本编写更加有用。
  • 结束时间码 — SRT 中需要; VTT可以从下一个提示推断出结束,尽管明确的更安全。
  • 额外功能 — VTT 添加了提示设置,例如行位置、对齐方式和文本标记。

样式和安全标记

WebVTT 允许在提示内使用一组有限的标签 - 对于通过 `::cue` 使用 CSS 设置样式的类,`<b>`、`<i>`、`<u>` 和 `<c.classname>`。其他任何内容都更有可能呈现为文字文本。这也是为什么转换应该在存在时保留简单的格式并删除格式无法表达的内容,而不是将标记转义到可见的尖括号中。

                WEBVTT

00:00:12.500 --> 00:00:15.000 align:start
That was the point.
              

为什么它比播放更重要

字幕是大多数平台上的可访问性要求,而且它们也是索引材料:文本轨道为搜索引擎和助手提供了仅音频无法提供的机器可读脚本。因此,正确编码的 `<track kind="captions">` 具有双重作用:满足合规性并为视频提供原本可能缺少的文本呈现。

编码问题:使用适当的字符集将 VTT 作为 UTF-8 提供。以旧编码保存的带有重音字符的文件将在播放器中呈现为 mojibake,并且它看起来像是一个转换错误而不是编码错误。

实际工作流程

  1. 将 SRT 转换为 VTT 并检查第一个和最后一个提示的时间码是否正确。
  2. 保存为带有 .vtt 扩展名的 UTF-8,并使用您控制服务器的 text/vtt 内容类型提供服务。
  3. 使用 `<track kind="captions" srclang="en" label="English" default>` 从视频元素引用它。
  4. 将字幕文件与视频文件一起上传,以便相对路径在部署后继续有效。

离线即时

字幕文件是大型文本文档,通常是未发布的作品 - 不应将审查剪辑的脚本上传到任何地方。该网站上的 SRT 到 VTT 转换器在浏览器中运行,因此两小时的文字记录只需几分之一秒即可完成转换,而无需离开计算机。

SRT 至 VTT — 常见问题

为什么我的视频播放器忽略我的字幕文件?

几乎总是因为文件是 SRT 而不是 WebVTT。 HTML5 `<track>` 仅接受 VTT。转换为 VTT,确认文件以 WEBVTT 行开头,然后检查时间码是否使用点,而不是逗号。

YouTube 和其他平台需要 VTT 吗?

YouTube 接受 SRT 和 VTT 上传并在内部进行转换,但大多数自托管播放器和每个 HTML5 视频元素都需要 WebVTT。上传前进行转换可以使字幕在各处呈现相同的效果。

WebVTT 可以设计样式吗?

是的 - 在提示文本中,您可以使用粗体、斜体和下划线标签以及类跨度,并且可以使用 CSS 针对 `::cue` 伪元素设置类样式。定位通过提示设置(例如线条、位置和对齐)进行控制。

这篇文章中提到的工具

浏览 19 工具的完整列表

更多文章可供阅读

所有19帖子→