跳至主要內容
SubtitleMatrix

TXT 轉 SSA

格式轉換純文字稿
或者貼上字幕文字

選項

當來源檔案沒有結束時間時使用(純文字、LRC)。輸出裡的時間軸是在這裡產生的,不是轉換來的,所以填多少就是多少。

這次轉換會改變什麼

有 2 項會被捨棄或需要你決定

  • 時間

    時間軸本身——來源檔案不記錄任何時間,因此輸出的時間軸是產生出來的,而非轉換而來

  • 精確度

    時間精確度——輸出的時間刻度較粗,因此每個時間戳記都會四捨五入到最接近的 10 毫秒

這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。

這一頁把純文字檔轉成 SSA。TXT 裡沒有任何時間碼,一行文字就是一條字幕,所以時間軸由這一頁排出來;整個過程在本機完成,不上傳、不需要帳號。

兩個格式能存的東西不同:時間軸與時間精度在 SSA 裡沒有落點。上方清單說的是兩個格式各自能表達什麼,不是讀了你的檔案才有答案——TXT 本來就沒有時間資訊,這一頁得先把時間軸排出來。

空白行是段落分隔,不會變成空字幕;有文字的行才佔一個時間槽,預設每行 2 秒,可以調整。單檔可以,整季也可以:佇列依序處理,結果打包成一個 ZIP。

範例

一份典型的 TXT 檔轉成 SSA

輸入

The quick brown fox jumps over the lazy dog.

Second paragraph, first line.
Second paragraph, second line.

輸出

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,The quick brown fox jumps over the lazy dog.
Dialogue: 0,0:00:02.00,0:00:04.00,Default,,0,0,0,,Second paragraph, first line.
Dialogue: 0,0:00:04.00,0:00:06.00,Default,,0,0,0,,Second paragraph, second line.

這份產物丟掉了:時間軸與時間精度。其餘內容逐行對得上。

同一轉換遇到結構鬆散的 TXT 輸入

輸入


Hello world.

Second block.

輸出

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,Hello world.
Dialogue: 0,0:00:02.00,0:00:04.00,Default,,0,0,0,,Second block.

真實檔案常有混合換行、多餘空白與空欄位,這份輸入就是那個樣子;可以對照上面那份乾淨範例,看看解析器容忍到哪裡。

常見問題

把 TXT 轉成 SSA 時,時間軸是從哪裡來的?

是這一頁排出來的,因為 TXT 裡沒有任何時間。第一行從 0 開始,之後每一行接在上一行結束的地方,每行預設 2 秒;SSA 產物裡就是這條等距時間軸。

TXT 轉 SSA 時,毫秒為什麼會變成百分之一秒?

TXT 沒有時間碼——時間軸是這一頁排出來的——但 SSA 只存到百分之一秒(0:00:04.13),所以排好的時間仍要四捨五入到 10 毫秒,4,126 毫秒會變成 4.13 秒。任何一行位移都不超過 5 毫秒,也不會重排。

TXT 轉成 SSA 的產物長什麼樣子?

SSA 沒有 cue 編號:每一條字幕都是 [Events] 段裡的一行 Dialogue:,原本放編號的位置換成 Marked 欄位。TXT 的每一條 cue 依序變成一行,文字不變。

TXT 的 cue 順序在 SSA 檔裡會重排嗎?

會按開始時間排序,最早的在前。TXT 的每一條字幕進到 SSA 都照這個順序寫;若原檔本來是亂的,產物會把它們排回正確順序——改的是結構,不是內容,這也是本站每個格式共用的讀檔順序。

把 SSA 轉回 TXT,剛才丟掉的東西補得回來嗎?

SSA 轉回 TXT 會丟掉時間軸、樣式、定位、卡拉OK、換行分組與格式私有內容([Script Info]、內嵌字型、Comment: 事件);時間軸本來就是這一頁排的,回頭時直接沒有了。

TXT 轉 SSA 的產物用什麼編碼與換行?

一律是 UTF-8、Unix 換行(LF)、不帶 BOM,不管 TXT 原檔用什麼。若輸入是 UTF-16 或 Windows 單一位元編碼,讀入時會先解碼,結果面板會說明;SSA 產物永遠是同一種 UTF-8。

相關工具