跳至主要內容
SubtitleMatrix

SSA 轉 SMI

格式轉換SubStation Alpha(SSA)
或者貼上字幕文字

這次轉換會改變什麼

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

  • 樣式

    除粗體與斜體之外的全部樣式(顏色、外框、陰影、邊界)

  • 卡拉 OK

    卡拉 OK 計時(逐音節高亮)

  • 格式專屬內容

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

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

這一頁把 SSA 轉成 SMI(SAMI)。拖曳檔案進來,或貼上文字,就會取回 SMI 版本;轉換在瀏覽器裡完成,不上傳、不需註冊。

兩個格式存的東西不一樣:樣式、卡拉OK 與格式私有內容在 SMI 裡都沒有落點。上方清單由兩個格式各自能表達什麼算出,不是讀你的檔案。SAMI 的每一條字幕是一個 <SYNC> 加一個 <P>,而 SYNC 會取代畫面上既有的內容,所以每條之後還會補一個空塊。

一份可以,整季也可以:佇列依序處理,結果打包成一個 ZIP。

範例

一份典型的 SSA 檔案轉成 SMI

輸入

[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal

[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: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines

輸出

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P><i>Italic</i> line.
<SYNC Start=8000>
<P>&nbsp;
<SYNC Start=9000>
<P>Two<br>lines
<SYNC Start=12000>
<P>&nbsp;
</BODY>
</SAMI>

這份產物丟掉樣式表、卡拉OK 與格式私有內容;時間毫秒不差,強調仍留在標籤裡。

同一轉換遇到一份髒檔案

輸入

[Script Info]
Title: Dirty SSA
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
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.

輸出

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P><b>Bold</b> and <u>underlined</u>.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P>A soft<br>break and a {\p1}mystery{\p0} code.
<SYNC Start=8000>
<P>&nbsp;
</BODY>
</SAMI>

真實檔案的混合換行與空欄位不影響逐條輸出;對照乾淨樣例,可以看出哪些損壞被容忍、哪些進了有損說明。

常見問題

SSA 轉 SMI 後,哪些樣式還會留下來?

片段級強調:粗體、斜體、下劃線、顏色寫成 <b>、<i>、<u> 與 <font color="…">,瀏覽器會照著呈現;樣式表的字型、字級、描邊、陰影與邊界都沒有落點。

SSA 轉 SMI 後,為什麼每條字幕後面多一個空塊?

SAMI 的一條 <SYNC> 會取代目前畫面,字幕消失也需要一道指令;產物因此在每條之後寫一個 <P>&nbsp; 清空畫面,否則上一條會一直留著。

SSA 轉 SMI 後,時間值怎麼寫?

寫成整數毫秒的 Start 值。SSA 的 0:00:04.13 是 4130 毫秒,產物寫 Start=4130,不四捨五入也不平移。

SSA 轉 SMI 後,卡拉OK 計時去哪了?

計時沒了,字還在。\k、\kf、\ko 標記音節何時亮,SMI 沒有行內時刻;標記移除,音節以普通文字進入 <P>。

SSA 轉 SMI 後,[Script Info] 與 Comment: 行呢?

都不會過去。只有 Dialogue: 行變成字幕;[Script Info](含標題)、樣式表、Comment: 行與 [Fonts]/[Graphics] 全部丟棄。

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

放在同一個 <P> 裡,兩行之間用 <br>,這是 SAMI 的硬換行寫法;仍是一條字幕,一起顯示。

SSA 轉 SMI 後,字幕順序會改變嗎?

會依開始時間升序寫出。原始腳本若亂序,產物會排回正軌,這是結構整理。

把 SMI 轉回 SSA 會丟掉什麼?

精度與格式私有內容。毫秒寫回 SSA 會落到百分秒(單點最多差 5 毫秒),頁面層級的結構與樣式在腳本裡也沒有對應段落。

SSA 轉 SMI 會保留來源編碼嗎?

不會。產物固定 UTF-8、Unix 換行、無 BOM,來源編碼只在讀入時解碼並在結果面板說明。

相關工具