CSV 轉 SMI
或者貼上字幕文字
這次轉換會改變什麼
這個方向不會遺失內容 —— 來源格式的每一項特性在目標格式裡都有地方可去。
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 CSV 表格轉成 SMI。表格用表頭認出開始時間、結束時間與正文;沒有表頭時就按 start、end、text 的順序讀。轉換全程在瀏覽器裡完成,不上傳、不需要帳號。
這個方向不丟東西:CSV 能表達的每一項,SMI 都接得住,時間軸、換行與文字都會原樣過去,連引號裡的逗號也不例外。上方清單因此沒有東西可列。
時間碼寫到毫秒;正文裡的逗號會強制整個欄位加上雙引號,換行也留在同一格裡,讀回時才不會被拆成兩條。單檔可以,整季也可以:佇列依序處理,結果打包成一個 ZIP。
範例
一份典型的 CSV 檔轉成 SMI
輸入
start,end,text
00:00:01.000,00:00:03.500,The quick brown fox.
00:00:04.000,00:00:06.250,"Jumps over, the lazy dog."
00:00:07.000,00:00:09.000,"Two lines here.
And a second one."
輸出
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>The quick brown fox.
<SYNC Start=3500>
<P>
<SYNC Start=4000>
<P>Jumps over, the lazy dog.
<SYNC Start=6250>
<P>
<SYNC Start=7000>
<P>Two lines here.<br>And a second one.
<SYNC Start=9000>
<P>
</BODY>
</SAMI>
這一方向不丟東西:左右兩欄可以逐行對照。
同一轉換遇到結構鬆散的 CSV 輸入
輸入
id,start,end,note,text
1,00:00:01,000,00:00:04,000,cue one,"Hello there, friend."
2,00:00:05.000,00:00:07.000,cue two,Second line.
bad,notatime,00:00:09.000,cue three,Unreadable start.
4,00:00:10.000,00:00:09.000,cue four,End before start.
5,00:00:12.000,00:00:14.000,cue five,Unquoted comma in text, right here.
輸出
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there, friend.
<SYNC Start=4000>
<P>
<SYNC Start=5000>
<P>Second line.
<SYNC Start=7000>
<P>
<SYNC Start=10000>
<P>End before start.
<SYNC Start=10001>
<P>
<SYNC Start=12000>
<P>Unquoted comma in text, right here.
<SYNC Start=14000>
<P>
</BODY>
</SAMI>
真實檔案常有混合換行、多餘空白與空欄位,這份輸入就是那個樣子;可以對照上面那份乾淨範例,看看解析器容忍到哪裡。
常見問題
CSV 轉成 SMI 的產物長什麼樣子?
SMI 沒有編號也沒有時間碼行:每一條字幕是 <SYNC Start=…> 標記加一個 <P> 區塊,後面再補一個 <P> 把畫面清空,因為 SYNC 會蓋掉前一個畫面。CSV 的每一條 cue 依序變成一組。
CSV 轉 SMI 時,時間碼會失真嗎?
不會。CSV 的 00:00:04.126 在 SMI 裡就是 Start=4126,精度同為毫秒,時間軸不會漂移。
CSV 裡同一條字幕的兩行,轉成 SMI 後還綁在一起嗎?
CSV 轉 SMI:還是一條。兩行之間放 <br>,SAMI 的播放器會把它們顯示成同一條字幕的兩行。
CSV 的 cue 順序在 SMI 檔裡會重排嗎?
會按開始時間排序,最早的在前。CSV 的每一條字幕進到 SMI 都照這個順序寫;若原檔本來是亂的,產物會把它們排回正確順序——改的是結構,不是內容,這也是本站每個格式共用的讀檔順序。
把 SMI 轉回 CSV 會丟東西嗎?
會。SMI 帶得動樣式、定位與格式私有內容(<SYNC> 後的清空區塊、<P> 分組方式),這些在 CSV 裡都沒有落點;CSV 轉 SMI 這一趟無損,回頭那一趟不是。
CSV 轉 SMI 的產物用什麼編碼與換行?
一律是 UTF-8、Unix 換行(LF)、不帶 BOM,不管 CSV 原檔用什麼。若輸入是 UTF-16 或 Windows 單一位元編碼,讀入時會先解碼,結果面板會說明;SMI 產物永遠是同一種 UTF-8。