视频和字幕·字幕工具包
为什么字幕文件中的杂散标签会破坏平台字幕上传
· 为什么它很重要
字幕 文本处理 webvtt
平台会严格解析字幕上传,并且通常会默默地进行解析。这篇文章解释了字幕文件被拒绝或显示奇怪的常见原因,为什么格式化标签和代码是常见的罪魁祸首,以及干净、标准的文件如何避免该问题。
上传已被接受,标题显示文字标签 — 不干净文件的安静失败
最糟糕的结果不是拒绝。当您仍在查看表单时,上传被拒绝表明出现了问题。常见的结果是接受,然后是向观众显示自己的标记的字幕,因为上传检查和渲染路径是不同的软件,会提出不同的问题。
上传检查通常会询问文件是否解析为提示。渲染询问如何处理每个提示的内容,解析器会忽略不熟悉的标签,将其绘制为文本。这两个步骤都完成了它们的设计目的。
实际接受的平台 - 普通 SRT 和具有可预测结构的 WebVTT,对额外内容的容忍度很小
平台接受的范围比工具发出的范围窄。实际上,这意味着具有可预测形状的普通 SRT 或 WebVTT:由空行、时间码行、文本行和其他内容分隔的块。对额外功能的容忍度很低,更重要的是,没有记录,因此安全的假设是,任何超出该形状的东西都是风险而不是功能。
这本身并不是保守主义。接受任意标记的平台必须决定如何在网络、移动和电视客户端上一致地呈现它,这比接受字幕文件的承诺要大得多。
通常的罪魁祸首——类似 HTML 的标签、ASS 样式的代码、BOM、混合行结尾和空白提示
反复出现的罪魁祸首很少。斜体、说话者声音和提示类别的尖括号标签可以在支持它们的格式转换后保留下来。大括号分隔的覆盖代码来自 SubStation 格式,除了它们之外没有任何意义。文件开头的字节顺序标记将其自身附加到第一个索引号。跨平台编辑中的混合行结尾会破坏块分割。删除标记后文本变空的提示仍保留为带有时间戳的空白。
这些都不是异国情调。它们是转换链的正常输出,其中每个步骤都是单独合理的,这就是为什么它们出现在编辑器中看起来不错的文件中。
为什么一个平台可以容忍另一个平台所拒绝的内容 - 类似上传表单背后的不同解析器
不同的平台容忍不同的子集,这就是导致故障难以诊断的原因。同一个文件可以在一个服务上干净地上传并正确呈现,在第二个服务上上传并呈现标记,并被第三个服务拒绝,并且没有指出实际原因的错误消息。文件在两次尝试之间没有改变;三个解析器不同意。
因此,将一个平台视为参考是错误的本能。在最宽松的服务上工作的文件不会告诉您任何有关其他服务的信息,而最严格的解析器是定义文件是否可移植的解析器。
工作示例:一个文件,三个上传 - 相同的杂乱如何以不同的方式显示并在清理后消失
采取一个导出,在 60 个提示上携带帧顶部覆盖代码,在 40 个提示上携带强调标记,以及字节顺序标记。上传到三个服务后,它可能会被所有地方接受。第一个标签受到尊重,并且覆盖代码按字面意思绘制。在第二个上,两者都显示为文本。在第三个标记上,第一个提示会消失,而第一个提示根本不会出现,也没有人注意到,因为开场白通常是标题。
清理一次即可从源头删除所有三个类别。尖括号标签和大括号代码被替换,留下的空白被折叠,删除所清空的线索被丢弃而不是作为带时间戳的空白发出,并且文件被重写,线索从一开始连续重新编号。然后相同的输出发送到所有三个服务。
这不包括什么 - 特定于平台的样式指南、每行字符限制和内置字幕
这涵盖结构可移植性,而不是编辑一致性。关于行长度、最大字符数、扬声器标签的定位和声音效果处理的平台风格指南是独立的要求,干净的文件无法自动满足。结构完美的字幕文件仍然可能违反风格指南。
内置字幕是完全不同的机制。渲染到视频帧中的文本不是字幕文件,无法关闭,并且不受此处描述的任何内容的影响。
要点:一次清理,随处上传 — Subtitle Toolkit 的清理和转换功能如何生成平台友好的文件
清理一次并在各处上传相同的文件。另一种方法是为每个平台维护单独的导出,这会增加可能与主服务器不同步的文件数量,并且不会消除其中任何一个的潜在混乱。
一起运行清理和转换,然后在上传之前而不是之后阅读报告的问题。问题名称通过数字提示,这是知道文件有问题和知道要查看哪一行之间的区别。