SMI 轉 TXT
或者貼上字幕文字
這次轉換會改變什麼
有 5 項會被捨棄或需要你決定
- 時間
整條時間軸(輸出格式完全不記錄時間)
- 樣式
全部樣式(粗體、斜體、顏色、外框、陰影)
- 定位
螢幕定位(每條字幕都會回到預設位置)
- 換行
換行(多行字幕會被合併成一行)
- 格式專屬內容
來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 SMI 轉成 TXT:拖曳檔案進來,或直接貼上文字,就會拿回純文字版本。轉換完全在瀏覽器裡執行,不會上傳。
這兩種格式存的東西不同,而且差別不是外觀問題:時間軸、樣式、定位、換行分組與格式私有內容在 TXT 裡都沒有落點。產物只有文字,一行字幕的一行就是文字檔的一行;順序會保留,但檔案不再說明任何一句何時上螢幕。上方清單是從兩種格式各自能表達什麼算出來的。
單一檔案可以,整季影集也可以:佇列會依序處理,結果一起打包成一個 ZIP 下載。
範例
一份典型的 SMI 檔案轉成 TXT
輸入
<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>
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>
</BODY>
</SAMI>
輸出
Hello there.
How are you?
Fine, thanks.
這份產物丟掉了時間軸、樣式與分行分組;只留文字本身。
同一轉換遇到格式紊亂的輸入
輸入
<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 & Jerry
<SYNC Start=12000>
<P Class=ENCC>
</BODY>
</SAMI>
輸出
Line one
Line two
Tom & Jerry
真實檔案常見的損壞就是這樣——混合換行、散落的空白、壞掉的 SYNC 區塊。拿它和上面那份乾淨樣本對照,就能看出解析器容忍到什麼程度。
常見問題
SMI 轉 TXT 後,時間碼去哪了?
被丟棄了。TXT 沒有地方放時刻,產物只有文字;SMI 行的順序會保留,但不再說明任何一句何時出現。
SMI 轉 TXT 後,粗體、斜體與顏色會怎樣?
全部消失。TXT 不存任何樣式,段落文字裡的 `<i>`、`<font color>` 與 `<STYLE>` 區塊的 CSS 都沒有落點,每行都寫成純文字。
SMI 轉 TXT 後,螢幕定位會保留嗎?
不會。TXT 無法指定字幕畫在哪裡,段落屬性與 CSS 會一併丟棄。
SMI 轉 TXT 時,一條兩行的字幕會變成幾條?
會變成兩行獨立文字。TXT 無法把幾行組成一段字幕,再讀回去就是兩條字幕,準備二次處理時要先想清楚。
SMI 的 <STYLE> 區塊與 Class 屬性在 TXT 裡怎麼處理?
都會被丟棄。`<STYLE>` 的 CSS、`<TITLE>` 與 `Class=ENCC` 都不會出現在純文字裡。
SMI 轉 TXT 後,清屏區塊會留下空白行嗎?
不會。`<P> ` 沒有文字,不寫出一行,避免產物裡出現來源不明的空白行。
SMI 轉 TXT 時,字幕順序會改變嗎?
會依開始時間升序輸出;第 N 段字幕的文字仍然排在第 N 位,只是不再帶著時間資訊。
SMI 轉 TXT 之後可以再轉回 SMI 嗎?
可以,但回程會遺失時間軸。TXT 沒有時間資訊,反向轉換只能得到沒有可靠時間的字幕,所以那條路徑有自己的遺失清單。
SMI 轉 TXT 的產物使用什麼編碼?
固定 UTF-8、Unix 換行、無 BOM;輸入若是 UTF-16 或 Windows 單一位元組編碼,讀入時會先解碼並提示。