如何将 SRT 字幕转换为 WebVTT
将文件加载到字幕工具包中(自动检测格式)并以其他格式下载。计时在内部保持为整数毫秒,因此转换是精确的并且往返不会累积漂移。
重命名该文件不起作用。 WebVTT 文件必须以文字行 WEBVTT 开头,并且必须在毫秒之前使用句号而不是逗号。浏览器在重命名 SRT 后通常不会显示任何内容,也不会出现错误解释原因。
真正破坏播放的三个差异
首先,标题。 WebVTT 文件的第一行以 WEBVTT 一词开头。 SRT 没有标头,从第一个提示开始。这一行缺失是转换后的文件在浏览器中无提示失败的最常见原因。
其次,毫秒分隔符。 SRT 用逗号写入 00:00:01,500; WebVTT 写入 00:00:01.500 带句号。玩家期待其中一个而给出另一个时通常会拒绝这个提示。
第三,提示编号。 SRT 通常在每个时间戳之前在其自己的行上放置一个整数。在 WebVTT 中,该标识符是可选的,当存在时,它可以是任何字符串而不是数字。
还有一些较小的差异并不那么重要。 WebVTT 允许省略小时部分,因此 01:30.000 表示九十秒。它还支持时间戳后的cue设置,例如line:90%align:center。
什么能在转换中幸存下来,什么不能
- 两个方向的计时都准确无误。两种格式均表示整数毫秒。
- 提示内的换行符会保留下来。它们对于可读性很重要并被保留。
- 诸如线条和对齐之类的提示设置会保留到 VTT 中,并被丢弃到 SRT 中,因为 SRT 无法表达它们。
- 出于同样的原因,WebVTT STYLE 和 REGION 块将被跳过而不是转换。
- 导出时提示编号从 1 开始连续重新编号,这修复了手工编辑文件积累的间隙和重复项。
验证发生在加载时
每个文件在加载时都会被检查,结果会显示在预览上方。每条消息都会指定一个特定的提示编号,因为“此文件无效”在具有九百个提示的文件中毫无用处。
错误是真正的破坏:提示在开始之前结束、提示在前一个提示之前开始、无法读取的时间戳。警告在技术上是有效的,但通常是无意的:永远不会出现的零持续时间提示,或者两个提示重叠,因此同时显示。
格式错误的提示不会中止文件。坏块被报告,其余块仍然加载,因此您可以一次性看到问题的规模,而不是一次修复一个崩溃的错误。
当您在那里时删除格式
字幕文件通常带有标记:类似于 HTML 的标记,例如斜体和粗体、WebVTT 类和语音标记以及控制定位的 SubStation 覆盖块。
删除格式操作会删除所有这些内容,同时保留每个提示内的换行符。诸如 & 之类的字符实体故意保留,因为它们是内容而不是格式。
工作示例:HTML5 视频元素的字幕
您拥有来自转录服务的 episode-01.srt,并且需要网页上视频的字幕。该页面使用了 track 元素,这需要 WebVTT。
SRT 文件的开头如下:
1 / 00:00:02,000 --> 00:00:04,500 / 欢迎回到节目。
- 将 episode-01.srt 加载到字幕工具包中。检测到格式;将显示提示计数和任何验证消息。
- 修复任何报告为错误的内容。有关重叠的警告值得一看,但很少会阻止播放。
- 下载为 VTT。
结果: 以 WEBVTT 行开头的文件,后跟时间戳为 00:00:02.000 --> 00:00:04.500 并带有句号的提示。提示从 1 开始重新编号,文本及其内部换行符保持不变,计时与毫秒相同。
打开工具
在浏览器中解析和重写,这对于禁运下的字幕很重要。它不转录或翻译。
这不包括什么
- 仅限 SRT 和 WebVTT。 ASS 和 SSA、TTML、SAMI 和嵌入式广播字幕格式既不能读取也不能写入。
- 仅针对 VTT 输出保留提示定位;导出到 SRT 会丢弃它。
- STYLE 和 REGION 块将被跳过而不是转换。
- 该工具可以转换您已有的字幕文件。它不转录音频也不翻译。
- 提示编号在导出时始终会重新编号,因此故意编号不连续的文件将会丢失该编号。