跳至主要內容
SubtitleMatrix

字幕順序錯亂偵測

品質檢查時間軸不單調
或者貼上字幕文字

選項

時間以哪個影格率計算。在格式頁面上,這是 MicroDVD 需要的值,因為它把時間存成影格編號。在影格率頁面上,它是檔案當初對應的速率 —— 字幕是照這個版本製作的 —— 而頁面的第二個欄位填你要搭配的影片速率。常見的有 23.976、24、25、29.97、30、50、59.94 和 60。填錯會讓整條時間軸位移;在影格率頁面上,位移是按比例發生,而不是固定的量。

字幕檔案應該一路往前:每一條字幕的開始時間,都不早於前一條。這一頁回報的就是不成立的那種檔案——讀取器必須先把字幕條搬動過,檔案才撐得住——而它的依據是讀取器自己留下的排序紀錄,不是字幕條本身,因為等到能檢查的時候,順序早就已經是對的了。產物是一份報告,不是轉換後的檔案:什麼都沒有被改寫。

讀報告之前,值得先弄懂這個機制。檔案一讀進來,字幕條就會依開始時間排序,因為其他每一個操作、每一份預覽與每一次匯出,都假設順序是遞增的。所以一份順序錯亂的檔案,在字幕條身上不會留下任何痕跡——唯一活下來的證據,是「有幾條字幕條必須被搬動」,而報告印的就是這個:一筆檔案層級的發現、受影響的字幕條數,以及沒有時間碼,因為排序之後,已經沒有哪個位置能誠實地稱為錯的位置。

什麼算順序錯亂?開始時間變小,如此而已。兩條字幕從同一毫秒開始,不算錯亂:排序是穩定的,沒有任何東西移動,檔案也就通過這項檢查——這種成對出現的情況,更可能在重疊那一頁現身。照順序讀進來的檔案,會產生一份發現區空無一物、開頭寫著讀檔過程沒有丟失任何東西的報告,而這是一次貨真價實的無罪判決:這項檢查的證據是「必須搬動的字幕條數」,而零是一個數字。純文字不接受,因為一個沒有開始時間的格式,在任何意義上都不可能順序錯亂。

範例

整份檔案倒著跑

字幕

1
00:00:10,000 --> 00:00:11,000
I was working late.

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

報告發現了什麼

Cues out of sequence — 1 found

Severity   Cues   Start   End   Measured
Warning    —      —       —     2 items

第二條字幕比第一條早了九秒開始。報告給出一筆發現,而且沒有時間碼:字幕條在讀檔時就被排序了,所以檔案裡已經沒有哪個位置可以稱為錯的。開頭那一行 Cue order × 2,是同一件事在讀取當下數出來的。

順序正確,報告也這麼說

字幕

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

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

報告發現了什麼

Cues out of sequence — Nothing found

Cues                2
Checks run          1
Lost while reading  Nothing

時間遞增,什麼都沒移動。在這一頁,空的結果是真正的無罪判決,而不是沒有答案;Lost 那一行寫 Nothing 也是同一個理由——這項檢查的證據是必須搬動的字幕條數,而這份檔案一條都沒有。

兩條同時開始不算順序錯亂

字幕

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

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

報告發現了什麼

Cues out of sequence — Nothing found

Cues                2
Checks run          1
Lost while reading  Nothing

相同的開始時間不是變小,排序穩定,沒有任何字幕條移動。像這樣的檔案帶的是另一種缺陷——兩條字幕共用畫面——那是重疊那一頁的工作。把它送來這裡,等於回報一次從來沒有發生的重新排序。

常見問題

在這一頁,什麼樣的字幕檔案算順序錯亂?

某條字幕的開始時間,比它上面那條的開始時間還早。換句話說,就是變小,如此而已:相同的開始時間不算變小,結束時間相同的字幕條則無關緊要,因為排序看的是開始時間。一條壞掉的字幕,就足以讓整份檔案被回報。

為什麼這筆發現沒有時間碼?

因為字幕條在讀檔時就被排序了,而報告是在那之後才產生的。到那個時間點,記憶體裡的順序已經正確,也沒有哪個位置還能誠實地稱為錯的位置。必須搬動的字幕條數就是證據,它印在 Measured 欄,也以丟失紀錄的形式再出現在報告開頭。

這一頁會重新排序我的檔案嗎?

不會。它讀取檔案並產生報告,原始檔案原封不動。發現所說的排序,發生在瀏覽器讀取的過程裡,不會被寫到任何地方。若你要的是排好序的檔案本身,那是另一個操作,產物才是一份字幕檔案。

兩條字幕同一時間開始,在這一頁算問題嗎?

在這一頁不算——相同的開始時間排序時什麼都不會移動,所以檢查回報沒有發現。這種成對的字幕值得為另一個理由看一下:兩條字幕同時出現在畫面上就是重疊,那才是該送去的那一頁。

哪些字幕格式可以檢查字幕條順序?

十二種裡的十一種:SRT、WebVTT、ASS、SSA、SBV、SMI、LRC、MicroDVD、TTML、JSON 與 CSV。純文字不在名單上,因為沒有開始時間就沒有順序可言——在那裡回報乾淨結果,是假的無罪判決,不是真的。

交付出去的字幕檔案,多常發生順序倒過來?

比時間軸上看起來的頻繁,而且理由通常很無聊:兩份檔案用手合併、一趟機翻把分段用不同順序回傳,或計時工具只套用在選取範圍而不是整份檔案。它很少活到播放器那一關,因為播放器也會排序,但它會活進那些假設檔案已經排好的工具裡。

可以一次檢查一批檔案嗎?

可以。想丟幾個就丟幾個,它們會依序讀取,各自產生一份報告,最後一起以 zip 下載。佇列會逐檔顯示進度,執行到一半也能停止,不會在背景留下任何還在跑的東西。

相關工具