跳至主要內容
SubtitleMatrix

CSV 轉 SRT

或者貼上字幕文字

這次轉換會改變什麼

這個方向不會遺失內容 —— 來源格式的每一項特性在目標格式裡都有地方可去。

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

這一頁把 CSV 表格轉成 SRT。表格用表頭認出開始時間、結束時間與正文;沒有表頭時就按 start、end、text 的順序讀。轉換全程在瀏覽器裡完成,不上傳、不需要帳號。

這個方向不丟東西:CSV 能表達的每一項,SRT 都接得住,時間軸、換行與文字都會原樣過去,連引號裡的逗號也不例外。上方清單因此沒有東西可列。

時間碼寫到毫秒;正文裡的逗號會強制整個欄位加上雙引號,換行也留在同一格裡,讀回時才不會被拆成兩條。單檔可以,整季也可以:佇列依序處理,結果打包成一個 ZIP。

範例

一份典型的 CSV 檔轉成 SRT

輸入

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."

輸出

1
00:00:01,000 --> 00:00:03,500
The quick brown fox.

2
00:00:04,000 --> 00:00:06,250
Jumps over, the lazy dog.

3
00:00:07,000 --> 00:00:09,000
Two lines here.
And a second one.

這一方向不丟東西:左右兩欄可以逐行對照。

同一轉換遇到結構鬆散的 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.

輸出

1
00:00:01,000 --> 00:00:04,000
Hello there, friend.

2
00:00:05,000 --> 00:00:07,000
Second line.

3
00:00:10,000 --> 00:00:10,001
End before start.

4
00:00:12,000 --> 00:00:14,000
Unquoted comma in text, right here.

真實檔案常有混合換行、多餘空白與空欄位,這份輸入就是那個樣子;可以對照上面那份乾淨範例,看看解析器容忍到哪裡。

常見問題

CSV 轉 SRT 認得哪些欄位名稱?

常見的都認,而且比對很寬鬆:start、start time、timecode in、begin、from、in 都算開始;end、stop、to、out、finish 都算結束;text、subtitle、caption、content、line、dialogue、transcript 都算正文。表頭裡的空格、底線與連字號會忽略,大小寫不拘。

CSV 轉 SRT 時,表格沒有表頭怎麼辦?

第一列會被當成資料,欄位按 start、end、text 的順序取。判斷有沒有表頭看第一格是不是時間碼,所以第一列就是真字幕的表格不會被誤認成標籤列。

CSV 轉 SRT 時,儲存格可以放哪些時間格式?

分秒或時分秒都可以,小數前用逗號或點都行,小數一到三位;.5、.50、.500 都讀成半秒。小數位數不一時,讀法就看位數,這正是表格軟體匯出的常態。

CSV 轉 SRT 時,時間碼裡的逗號被拆成兩欄怎麼辦?

會被拼回去。SRT 寫法的時間碼本來就帶逗號,未加引號貼進表格就會落成兩欄;兩半看起來像同一個時間碼的兩截時,轉換器會合起來再讀,所以那種經典的壞匯出仍然轉得動。

CSV 轉 SRT 可以直接在表格裡從零做一份字幕嗎?

可以,而且這正是這一頁最常用的用法:三欄,一列一條字幕,寫完就轉。改文字時表格比字幕檔好編輯,轉回來只差一次點擊。

相關工具