跳到主要内容
SubtitleMatrix

字幕时间轴倒置检测

质量检查时间轴不单调
或者粘贴字幕文本

选项

时间按哪个帧率计算。在格式页面里,这是 MicroDVD 需要的值,因为它把时间存成帧号。在帧率页面里,它是文件当初对应的速率 —— 字幕是按这个版本做的 —— 而页面的第二个框填你要拿它配套的视频速率。常见的有 23.976、24、25、29.97、30、50、59.94 和 60。填错会让整条时间轴偏移;在帧率页面里,偏移是按比例发生的,而不是一个固定的量。

结束时间不晚于开始时间的时间码根本不可能成立:00:00:03,000 到 00:00:03,000,或者更糟,结束早于开始。这一页报告包含这种时间码的文件,计数来自读取器不得不做的修复——这种形状的时间码在内存里根本存不下,会在别的处理发生之前被换成一个真实的时间。

所以报告先写读取时丢失的内容,再给发现。结束不晚于开始的字幕条会被补成 1 毫秒,好让整份文件能继续被读取、预览和导出;修复次数印在报告头部,下面的发现写着一条错误、不带字幕条序号,因为修复是在读取过程中累计的,没有保留成列表。两行说的是同一个坏时间码的两面。

这一页要绕开的陷阱是:一条合法的 1 毫秒字幕看起来和修复出来的完全一样。因此检查根本不看时长,只看修复记录——真正只有 1 毫秒的字幕不会被报告。负时长与零长度归为同一种缺陷,一起计数。

有两种格式完全不接受,而且原因在两边相同:LRC 的每条结束时间来自下一条时间戳,一对起止永远不会反过来;纯文本没有字幕时间。在它们身上检查,只会得到一份关于格式没有这个字段的干净报告——那比没有答案更糟。其余十种格式支持,报告 PDF 与 CSV 各一份。

示例

一条没有时长的字幕

字幕

1
00:00:01,000 --> 00:00:02,000
Where were you?

2
00:00:03,000 --> 00:00:03,000
I was working late.

报告发现了什么

Cues ending before they start — 1 found

Lost while reading: Timing × 1

Severity   Cues   Start   End   Measured
Error      —      —       —     1 items

结束等于开始。读取器补给它一毫秒好让文件存得下,并记下这次修复,报告把两半都印出来:头部的丢失行和下面的一条错误。修复才是证据,那一毫秒只是证据呈现的形状。

一条真的只有一毫秒的字幕

字幕

1
00:00:01,000 --> 00:00:02,000
Where were you?

2
00:00:03,000 --> 00:00:03,001
I was working late.

报告发现了什么

Cues ending before they start — Nothing found

Cues                2
Checks run          1
Lost while reading  Nothing

手工写成的一毫秒字幕,不会被报告。这个决定塑造了整项检查:被修复的零长度字幕同样会以 1 毫秒出现,所以在这里按短时长报警,会把每一份含坏时间码的文件都说成满是超短字幕的文件。

常见问题

时间轴倒置检测把什么样的时间码算作倒置?

结束时间不晚于开始时间:等于它(00:00:03,000 到 00:00:03,000)或早于它(00:00:05,000 到 00:00:02,000)。两种是同一种缺陷、一起计数,而且计的是读取器做的修复,不是字幕条本身,因为这种形状的时间码在内存里存不下。

一条真正只有 1 毫秒的字幕会被时间轴倒置检测误报吗?

不会,这是刻意的。手工写成 1 毫秒的字幕合法且不会被报告;被报告的是不得不修复的时间码,它修复后恰好也存成 1 毫秒。按时长而不是按修复记录检查,会把每份含零长度字幕的文件说成满是超短字幕的文件。

为什么时间轴倒置检测的报告不点名具体字幕条?

因为修复是在读取过程中累计的,没有收集成列表。报告给出条数——一条错误、丢失行里一项——头和发现栏是同一件事的两面。要找具体位置,请按时间码的写法去文件里搜,而不是找序号。

时间轴倒置检测会把发现的时间码修好并写回文件吗?

不会。修复后的时间只存在于浏览器内,好让文件其余部分能被读取和报告。你拖入或下载的文件没有变化,这一页也没有保存修复版本来替换坏时间码的入口。

为什么 LRC 不在时间轴倒置检测的支持范围内?

因为 LRC 每行只有一个时间,结束时间由下一条时间戳推出,一对起止根本不可能反过来。在它身上检查等于评判一个格式没有的字段。纯文本则连时间码都没有。

时间轴倒置检测支持哪些格式?

十种同时带起止时间的格式:SRT、WebVTT、ASS、SSA、SBV、SMI、MicroDVD、TTML、JSON 与 CSV。LRC 与纯文本排除在外,理由都是这个字段不存在。

这些倒置时间码通常是怎么产生的?

几乎都是生成出来的,不是手打的:帧率转换舍入方向错了、同一条字幕被平移了两次、表格导出的结束列留空被读成零,或者从定时文本里抽出的字幕本来就带着没有时长的标记。

相关工具