跳至主要內容
SubtitleMatrix

TTML 轉 TXT

格式轉換TTML / DFXP
或者貼上字幕文字

這次轉換會改變什麼

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

  • 時間

    整條時間軸(輸出格式完全不記錄時間)

  • 樣式

    全部樣式(粗體、斜體、顏色、外框、陰影)

  • 定位

    螢幕定位(每條字幕都會回到預設位置)

  • 換行

    換行(多行字幕會被合併成一行)

  • 格式專屬內容

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

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

這一頁把 TTML 剝成純文字:每條 `<p>` 的正文依順序寫成一列列文字,時間軸、樣式、定位、硬換行分組全部不保留。它適合做校對稿、翻譯底稿或提詞稿。

丟的是五樣:時間(TXT 裡沒有時間碼)、樣式(`<styling>` 表與段落內 `<span>` 都不保留)、定位(`<layout>` 與 `region` 參照消失)、硬換行分組(兩行會寫成兩行文字,但檔案不再說它們屬於同一條字幕),以及 TTML 的頭部構造(XML 宣告、命名空間、`<metadata>`)。

文字本身不丟,`&amp;` 這類實體也按原文保留——它是來源檔案裡的合法寫法,本站不做額外的解碼或轉義。產物依開始時間升序,所以原文順序若亂,TXT 會按時間重排。輸出 UTF-8、LF、無 BOM;批次可取消、最後打包成 ZIP。

範例

一份典型的 TTML 檔轉成 TXT

輸入

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
  <head>
    <styling>
      <style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div>
      <p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
      <p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
    </div>
  </body>
</tt>

輸出

Hello there.
How are you?
Fine, thanks.

這個方向丟掉時間軸、樣式、定位、硬換行與頭部構造;文字本身逐行一致。

同一轉換遇到一份格式凌亂的檔案

輸入

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    ttp:frameRate="25" xml:lang="en">
  <body>
    <div>
      <p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
      <p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
      <p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
      <p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom &amp; Jerry.</p>
    </div>
  </body>
</tt>

輸出

Loaded from an offset and a duration.
A coarser clock spelling.
Frames, at 25fps.
Half-open and Tom &amp; Jerry.

這一份混用了真實寫法:位移加時長、較粗的時鐘拼法、按影格寫的時間、實體,以及只有開始時間的半開 cue。可以看解析器把哪些寫法折進同一條時間軸。

常見問題

TTML 轉 TXT 後,時間碼去哪了?

沒有地方可去。TXT 只有文字,`begin` / `end` 不會以任何形式出現;讀到第幾行只能知道順序,不能知道時刻。

TTML 的一條兩行字幕在 TXT 裡還是一條嗎?

不是。兩行寫成上下兩行文字,但 TXT 無法把行歸組,再讀回來會變成兩條獨立字幕。後續要做翻譯或重新對軸時要提前考慮。

TTML 轉 TXT 時 `<span tts:color>` 會留下什麼?

只留下文字,顏色與斜體都不保留。TXT 沒有樣式這一層,頭部的 `<styling>` 同樣整張丟掉。

TTML 的 `region` 定位在 TXT 裡有意義嗎?

沒有。TXT 沒有畫面位置,`region` 參照與 `<layout>` 表一起消失;文字順序是唯一的排序資訊。

TTML 轉 TXT 的行序會變嗎?

會依開始時間升序重排。來源若把 cue 寫亂,TXT 會把最早開始的放在最前面;這是結構改動,不是文字改動。

TTML 轉 TXT 時,`&amp;` 這類實體會被解碼嗎?

不會。本站不替來源多做一層解碼或轉義,實體按原文留在文字裡;這是可逆的選擇——你看到的字元與檔案裡寫的一致。

TTML 轉 TXT 後,`<metadata>` 會保留嗎?

不會。`<metadata>` 與 XML 宣告、命名空間都屬於頭部,TXT 沒有任何能安放它們的結構。

TXT 再轉回 TTML 會丟掉什麼?

丟掉時間軸。TXT 沒有任何時刻資訊,寫回 TTML 時只能給每條文字生成一個佔位的時間窗,與原始時間無關。

TTML 轉 TXT 的產物用什麼編碼?

UTF-8、LF、無 BOM;來源若是 UTF-16 或 Windows 單一位元編碼,會先解碼並在結果面板說明。

相關工具