视频和字幕·字幕工具包
WebVTT 解释:从 WebSRT 到 HTML5 视频的 W3C 字幕格式
· 背景
字幕 webvtt 文件格式 浏览器处理
WebVTT 的创建是为了使浏览器可以本地显示字幕。这篇文章介绍了它作为 WebSRT 的起源、它与 SRT 的区别、规范添加的内容以及它目前的使用情况。
为什么浏览器需要自己的字幕格式 - 原生视频的到来和标准轨道格式的缺乏
原生视频为网页提供了媒体元素,但定时文本仍然需要浏览器可以获取和解析的可互操作文件表示形式。对于需要定义语法、提示行为和演示挂钩的浏览器功能来说,非正式的 SRT 文件是不够的。 WebVTT 提供面向网络的合同,同时保持可识别的提示和时间戳形状。
该浏览器上下文解释了它的熟悉性和额外结构。最小的 VTT 看起来与 SRT 很接近,但它不是带有另一个扩展名的 SRT 。签名、时间戳标点符号和提示语法是决定浏览器是否已收到 WebVTT 的一部分。
WebSRT 和重命名为 WebVTT — 早期 WHATWG 工作和转向 W3C
该格式在成为 WebVTT(即网络视频文本轨道)之前,曾在早期的 WebSRT 名称下进行过讨论。该血统传达了设计路径:从广泛理解的字幕块形状开始,然后定义网络媒体所需的附加行为。本文避免了日期、指定的编辑和详细的标准主体年表,因为这些事实并未通过用于实施声明的存储库材料进行验证。
对于前端开发人员来说,持久的教训是 WebVTT 是浏览器媒体功能的指定输入,而不是特定于播放器的约定。实现应该针对其当前语法并在消费播放器中进行测试,而不是依赖于历史标签。
规范在 SRT 上添加的内容 — WEBVTT 标头、提示标识符、提示设置和样式挂钩
WebVTT 添加必需的 WEBVTT 签名并允许不需要是数字的提示标识符。提示设置可以遵循结束时间来表达对齐和放置,而“注释”、“样式”和“区域”块则提供超出普通 SRT 提示列表的元数据和表示结构。然后,浏览器样式挂钩可以处理显示的提示,而无需将文本烧录到视频中。
ToolAcre 实现了一个重点子集。它保留在结束时间戳之后找到的设置,但在加载时删除提示标识符并跳过“NOTE”、“STYLE”和“REGION”块。这对于普通转换来说已经足够了,并且故意不是完整 WebVTT 模型的无损编辑器。
点、标题和 UTF-8 — 阻止 SRT 文件成为有效 VTT 文件的细微差别
三个小细节将最小的 VTT 与 SRT 分开。第一行必须携带 WEBVTT 签名,时间戳在毫秒之前使用句号,并且文本必须是 UTF-8。 ToolAcre 通过测试签名来检测 VTT,同时容忍可选的字节顺序标记和前导空格;没有该签名的文本默认为 SRT。
序列化器写入签名和点标点符号,而不是保留源碰巧使用的任何内容。文件输入被读取为 UTF-8。因此,旧编码的 SRT 可以在转换之前显示替换字符,并且更改其容器语法无法恢复已错误解码的字节。
使用 WebVTT 的地方 — HTML5 轨道元素、HLS 字幕和许多视频平台
WebVTT 是与 HTML 视频轨道元素关联的 sidecar 格式,出现在使用定时文本的 Web 传输系统中。一些流媒体和平台工作流程也使用 WebVTT,但接受详细信息属于目的地,应在那里检查,而不是从扩展中推断。有效的 VTT 文件仍可能使用错误的媒体类型提供服务或被跨源传送规则阻止。
工具包生成文件表示;它不配置 HTML 页面、服务器标头或流清单。将转化视为交付的一个阶段,并使用观众将使用的相同 URL、标头和来源关系来测试实际播放器。
这不包括完整的样式和区域模型,大多数字幕文件从未使用过
完整的样式和区域模型位于此转换器之外。复杂的提示选择器、区域布局和呈现策略值得使用支持 WebVTT 的创作工具和浏览器测试。解析器会跳过 STYLE 和 REGION 块,因此通过此路径发送这样的主块会将它们从任一输出中删除,而不是不可见地保留它们。
该工具还将提示设置携带到 SRT 输出中,即使 SRT 没有定义对其进行操作的机制。该记录的限制是每当放置很重要时保留原始 VTT master 的原因,而不是假设每个目标都会以相同的方式忽略额外文本的原因。
要点:真正的网络标准 — 字幕工具包如何生成遵循该标准的 WebVTT
WebVTT 将熟悉的定时文本模式转换为定义的 Web 输入。签名对其进行标识,时间戳语法是规范的,并且提示模型可以携带的不仅仅是纯顺序文本。 Subtitle Toolkit 通过将时间解析为整毫秒,然后编写 WEBVTT 标头、点分隔符和不带标识符行的提示,从 SRT 生成最小规范文件。
比较源和输出提示计数并在将结果附加到播放器之前读取所有解析问题。如果源依赖于注释、区域、样式块或标识符,请选择保留这些功能的工作流程;专注的转换器应该说明该边界,而不是暗示完全的往返保真度。