SMI 轉 SRT
或者貼上字幕文字
這次轉換會改變什麼
有 3 項會被捨棄或需要你決定
- 樣式
全部樣式(粗體、斜體、顏色、外框、陰影)
- 定位
螢幕定位(每條字幕都會回到預設位置)
- 格式專屬內容
來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 SMI 轉成 SRT:拖曳檔案進來,或直接貼上文字,就會拿回 SRT 版本。轉換完全在瀏覽器裡執行,不會上傳,也不需要帳號。
這兩種格式存的東西不同,而且差別不是外觀問題:樣式、定位與格式私有內容在 SRT 裡沒有落點。上方清單是從兩種格式各自能表達什麼算出來的,不是從你的檔案判斷,所以在載入任何東西之前就是同一個答案。時間軸本身不受影響:SMI 的 `Start=4126` 寫成 SRT 的 `00:00:04,126`,不取整也不重排。
單一檔案可以,整季影集也可以:佇列會依序處理,結果一起打包成一個 ZIP 下載。
範例
一份典型的 SMI 檔案轉成 SRT
輸入
<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>
輸出
1
00:00:01,000 --> 00:00:03,000
Hello there.
2
00:00:03,500 --> 00:00:06,000
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>
輸出
1
00:00:02,500 --> 00:00:09,000
Line one
Line two
2
00:00:09,000 --> 00:00:12,000
Tom & Jerry
真實檔案常見的損壞就是這樣——混合換行、散落的空白、壞掉的 SYNC 區塊。拿它和上面那份乾淨樣本對照,就能看出解析器容忍到什麼程度。
常見問題
SMI 轉 SRT 時,行內粗體與斜體會保留下來嗎?
會保留。屬於文字本身的粗體、斜體、下劃線與顏色會寫成 SRT 的 `<b>`、`<i>`、`<u>`、`<font color>` 標籤;遺失的是檔案層級的樣式——字型、字級、描邊與邊距。
SMI 轉 SRT 後,畫面上的定位還在嗎?
不在。SRT 沒有欄位能指定字幕畫在哪裡,所以段落屬性與它們指向的 CSS 會一併捨棄,每段字幕回到播放器選擇的預設位置。
SMI 的 <STYLE> 區塊、<TITLE> 與 Class 屬性在 SRT 裡會怎樣?
都會被丟棄。SRT 存的是字幕段落而不是一份文件,`<STYLE>` 的 CSS、`<TITLE>` 與 `Class=ENCC` 都沒有地方放;寫在段落文字裡的強調則不受影響。
SMI 轉 SRT 後,時間軸精確到什麼程度?
毫秒。`Start=4126` 寫成 `00:00:04,126`,不取整也不挪位;原本顯示 2.9 秒的字幕,產物裡仍然是 2.9 秒。
SMI 轉 SRT 後,兩行的字幕會變成兩條嗎?
不會。兩行仍屬於同一個 SRT 字幕段落,上下排列,播放器會一起顯示。
SMI 轉 SRT 時,字幕順序會被重新排列嗎?
SRT 會依開始時間排序,最早的在前;原始檔案若亂序,產物會替你排好,這是結構修正而不是內容變動。
SMI 轉 SRT 之後,可以再轉回 SMI 嗎?
可以,而且回程不會再丟東西,因為 SRT 存的比 SMI 少;但這一程丟掉的樣式、定位與私有內容不會因此回來。
SMI 的清屏區塊會變成 SRT 的字幕嗎?
不會。`<P> ` 沒有文字,只拿來清屏,讀取時會認成清屏區塊而不是字幕,所以不會出現在 SRT 產物裡。
SMI 轉 SRT 的產物使用什麼編碼?
固定 UTF-8、Unix 換行、無 BOM。輸入若是 UTF-16 或 Windows 單一位元組編碼,讀入時會解碼並在結果面板說明。