跳至主要內容
SubtitleMatrix

SSA 轉 TTML

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

這次轉換會改變什麼

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

  • 卡拉 OK

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

  • 格式專屬內容

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

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

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

兩個格式存的東西不一樣:卡拉OK 與格式私有內容在 TTML 裡沒有落點。上方清單由兩個格式各自能表達什麼算出,不是讀你的檔案。TTML 是 XML 系的字幕格式,每條字幕是一個帶 begin 與 end 的 <p>;片段級的粗體、斜體與下劃線會寫成內聯樣式。

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

範例

一份典型的 SSA 檔案轉成 TTML

輸入

[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

輸出

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:01.000" end="00:00:04.000">Hello there.</p>
<p begin="00:00:05.000" end="00:00:08.000"><span tts:fontStyle="italic">Italic</span> line.</p>
<p begin="00:00:09.000" end="00:00:12.000">Two<br/>lines</p>  </body>
</tt>

這份產物丟掉卡拉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.

輸出

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:01.000" end="00:00:04.000"><span tts:fontWeight="bold">Bold</span> and <span tts:textDecoration="underline">underlined</span>.</p>
<p begin="00:00:05.000" end="00:00:08.000">A soft<br/>break and a {\p1}mystery{\p0} code.</p>  </body>
</tt>

真實檔案的混合換行與散落空白不影響 XML 輸出;讀不懂的覆寫碼原樣留在文字裡。

常見問題

SSA 轉 TTML 後,粗體與斜體寫成了什麼?

寫成 TTML 的內聯樣式:斜體是 <span tts:fontStyle="italic">,粗體是 tts:fontWeight="bold",下劃線是 tts:textDecoration="underline";樣式表的字型、字級、描邊與邊界不會過去。

SSA 轉 TTML 後,卡拉OK 計時還在嗎?

不在。\k、\kf、\ko 標記音節何時亮,TTML 的 <p> 沒有行內時刻;標記移除,音節以普通文字留下。

SSA 轉 TTML 時 0:00:04.13 需要四捨五入嗎?

不需要。SSA 只到百分秒,TTML 寫成 00:00:04.130,補零而不捨入;兩邊時刻相同,2.9 秒仍是 2.9 秒。

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

放在同一個 <p> 裡,兩行之間用 <br/>,這是 TTML 的硬換行寫法;仍是一條字幕,播放器會一起顯示。

SSA 轉 TTML 後,[Script Info] 與標題呢?

都會丟。只有 Dialogue: 行變成 <p>;[Script Info](含標題)、樣式表、Comment: 行與 [Fonts]/[Graphics] 都沒有落點。

SSA 轉 TTML 會依開始時間排序嗎?

會,最早的 <p> 在前。TTML 依檔案順序讀取,原始亂序的腳本會在轉換時整理成升序,這是結構整理而不是內容改動。

把 TTML 轉回 SSA 會丟掉什麼?

精度與格式私有內容。TTML 的毫秒寫回 SSA 只能到百分秒,單點最多差 5 毫秒;檔案層級結構在腳本裡也沒有對應段落。

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

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

相關工具