跳至主要內容
SubtitleMatrix

SMI 轉 SSA

格式轉換SAMI(SMI)
或者貼上字幕文字

這次轉換會改變什麼

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

  • 精確度

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

  • 格式專屬內容

    來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們

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

這一頁把 SMI 轉成 SSA:拖曳檔案進來,或直接貼上文字,就會拿回 SSA 版本。轉換完全在瀏覽器裡執行,不會上傳。

這兩種格式存的東西不同,而且差別不是外觀問題:精度與格式私有內容在 SSA 裡沒有落點。SSA 只寫到百分之一秒,`Start=4126` 會取整成 `0:00:04.13`,每段最多移動 5 毫秒;時間軸不會被拉伸,順序也不會重排。上方清單是從兩種格式各自能表達什麼算出來的。

單一檔案可以,整季影集也可以:佇列會依序處理,結果一起打包成一個 ZIP 下載。

範例

一份典型的 SMI 檔案轉成 SSA

輸入

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

輸出

[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.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,How are you?\NFine, thanks.

這份產物丟掉了精度、STYLE 與 TITLE;行內強調與多行分組都保留。

同一轉換遇到格式紊亂的輸入

輸入

<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom &amp; Jerry
<SYNC Start=12000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

輸出

[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:02.50,0:00:09.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Tom &amp; Jerry

真實檔案常見的損壞就是這樣——混合換行、散落的空白、壞掉的 SYNC 區塊。拿它和上面那份乾淨樣本對照,就能看出解析器容忍到什麼程度。

常見問題

SMI 轉 SSA 與轉 ASS 的損失相同嗎?

相同:兩者都只寫到百分秒,所以 `Start=4126` 會取整成 `0:00:04.13`,而 `STYLE`、`TITLE` 與 Class 都會丟。差別只在輸出結構——SSA 用 `[V4 Styles]` 與 `Marked`,ASS 用 `[V4+ Styles]` 與 `Layer`。

SMI 轉 SSA 後,行內粗體還在嗎?

在。`<P>` 裡的粗體、斜體、下劃線與顏色會映射成 SSA 的覆蓋碼;遺失的是檔案層級的樣式表。

SMI 轉 SSA 時,時間為什麼會取整?

SSA 的時間欄位只有百分秒精度,SMI 的毫秒沒有地方放,所以每個時間碼取整到最近的 10 毫秒,單段最多移動 5 毫秒。

SMI 轉 SSA 後,Marked 欄位填什麼?

填 0。`Marked` 站在 SRT 序號的位置,但 SSA 的播放順序由時間碼與圖層欄位決定,不靠這個欄位。

SMI 轉 SSA 會保留 <STYLE> 裡的 CSS 嗎?

不會。SSA 有自己的樣式表,但轉換不會把 SAMI 的 CSS 翻譯過去;產物使用補出來的 Default 樣式,原 CSS 列為格式私有內容遺失。

SMI 轉 SSA 後,兩行的字幕怎麼放?

放在同一條字幕裡,用 `\N` 連接兩行,播放器會一起顯示。

SMI 轉 SSA 的產物使用什麼編碼?

固定 UTF-8、Unix 換行、無 BOM;輸入若是 UTF-16 或 Windows 單一位元組編碼,讀入時會先解碼。

相關工具