跳至主要內容
SubtitleMatrix

SRT 轉 SSA

格式轉換SubRip(SRT)
或者貼上字幕文字

這次轉換會改變什麼

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

  • 精確度

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

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

這一頁把 SRT 改寫成 SubStation Alpha(SSA)腳本。SRT 是帶時間碼的文字清單,SSA 則是有標頭、樣式表與 [Events] 段的腳本,所以每條字幕會變成一條 Dialogue 列,時間寫成 0:00:04.13 這種百分秒寫法。

SSA 只到百分秒,SRT 的 00:00:04,126 會四捨五入到 10 毫秒,每條最多移動 5 毫秒——這個方向只丟精度。SRT 的編號沒有對應欄位,位置由事件列的 Marked 欄位代替;一條字幕裡的硬換行寫成 \N,兩行仍屬於同一個事件。

文字、順序與時間軸的整體位置都不變;反方向則不同,SSA 轉 SRT 會丟掉樣式、定位、卡拉 OK 與腳本私有構造。輸出固定為 UTF-8、Unix 換行、無 BOM;多個檔案可以一次拖入,佇列依序處理、可中途停止,結果打包成 ZIP,檔案不上傳。

範例

一份典型的 SRT 檔案轉成 SSA

輸入

1
00:00:01,000 --> 00:00:03,500
Hello there.

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

輸出

[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:01.00,0:00:03.50,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,{\i1}Whispering{\i0} now.\NAnd a second line.
Dialogue: 0,0:00:06.00,0:00:09.25,Default,,0,0,0,,{\b1}Bold{\b0} statement.

這份產物只遺失精度:毫秒被捨入到百分秒,文字與換行一致。

同一轉換遇到一份格式不規則的輸入

輸入

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
Last one.

輸出

[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:01.00,0:00:03.50,Default,,0,0,0,,{\b1}Bold{\b0} and {\i1}italic{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,
Dialogue: 0,0:00:08.00,0:00:09.00,Default,,0,0,0,,Last one.

混合換行與空欄位不會打亂 Dialogue 結構;對照乾淨範例,可以看出哪些損壞被修好。

常見問題

SRT 轉 SSA 後 00:00:04,126 會變成什麼?

0:00:04.13。SSA 只到百分秒,每個時間碼會四捨五入到最近的 10 毫秒,每條最多移動 5 毫秒。

SRT 轉 SSA 後產物長什麼樣子?

像 SSA:沒有字幕編號,每條字幕都是 [Events] 段裡的一列 Dialogue,原本放編號的位置是一個 Marked 欄位。每條 SRT 字幕會變成一條 SSA 字幕,順序與文字都相同。

SRT 轉 SSA 時一條兩行字幕會怎麼輸出?

變成兩行,中間用 \N 連接,這是 SSA 表示硬換行的方式;兩行仍屬於同一個 Dialogue 事件。

SRT 轉 SSA 後字幕順序會保留嗎?

會,而且過程中會依開始時間排序,最早的在前。若原始 SRT 是亂序的,SSA 產物會把它排回順序;這改的是檔案結構而不是內容。

SSA 轉回 SRT 會丟掉什麼?

反方向有自己的清單:SSA 轉 SRT 會丟掉樣式、定位、卡拉 OK 與格式私有內容。那份清單和上方不同,因為兩種格式各自保留的東西不一樣。

SRT 轉 SSA 後會保留來源檔案的編碼嗎?

不會,產物固定是 UTF-8、Unix 換行、無 BOM。UTF-16 或 Windows 單字元編碼的來源會在讀入時解碼(結果面板會說明),輸出永遠是同一種 UTF-8 SSA。

相關工具