VTT 轉 CSV
或者貼上字幕文字
這次轉換會改變什麼
有 2 項會被捨棄或需要你決定
- 樣式
全部樣式(粗體、斜體、顏色、外框、陰影)
- 格式專屬內容
來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 VTT 轉成 CSV。拖入檔案或貼上文字,就會拿回 CSV 版本;轉換全程在瀏覽器裡完成,不上傳、不需要帳號。
兩種格式存的東西不同,而且差別不是外觀:樣式與格式私有內容在 CSV 裡沒有落點,所以它們會遺失。上方清單來自兩種格式各自能表達什麼,而不是你的檔案,因此在你載入任何東西之前,答案就一樣。含有逗號或換行的文字會加上引號,一條兩行的字幕仍是一列,換行留在被引號包住的欄位裡;時間精度不受影響,VTT 與 CSV 都寫到毫秒。
一個檔案可以,整季也可以:佇列依序處理,結果一起打包成單一 ZIP。輸出固定為 UTF-8、Unix 換行、無 BOM,來源的編碼會在讀入時解碼。
範例
一份典型的 VTT 檔案轉成 CSV
輸入
WEBVTT
intro
00:00:01.000 --> 00:00:04.000
Hello there.
00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.
輸出
start,end,text
00:00:01.000,00:00:04.000,Hello there.
00:00:04.500,00:00:08.000,Second line with <i>italics</i>.
這份產物遺失了樣式與格式私有內容;其餘部分逐列一致。
同一轉換遇到一份格式不規則但可讀的輸入
輸入
a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.
輸出
start,end,text
00:00:01.000,00:00:02.000,"No header, two lines before the timecode."
真實檔案常見的損壞:混合換行、散落空白、留空欄位。對照上面的乾淨範例,可以看出解析器容忍到什麼程度。
常見問題
VTT 轉 CSV 後粗體與斜體還在嗎?
強調還在,樣式表則不在。屬於某段文字的格式——粗體、斜體、底線、顏色——會以標籤寫進 CSV 文字裡(<i>、<b>、<u>、<font color="…">),因為那是 cue 級格式仍能攜帶的一種樣式;遺失的是 VTT 在全域宣告的東西:字型、字級、描邊、陰影與邊界。
VTT 的 NOTE、STYLE 與 REGION 區塊轉成 CSV 後怎麼了?
被丟棄。WebVTT 可以帶標頭、註解、樣式區塊、區域定義,以及 align 或 position 這類每條字幕的設定,CSV 沒有地方放——它存的是 cue,不是整份檔案。cue 本身、文字與時間則完整通過。
VTT 轉 CSV 後產物長什麼樣子?
像 CSV:一列標題(start,end,text),接著每條字幕一列。每條 VTT 字幕會變成一列 CSV,順序與文字都相同。
VTT 轉 CSV 後時間還精確嗎?
是,精確到毫秒,這也是兩種格式共同的極限。VTT 與 CSV 都用同樣的方式寫時刻——00:00:04.126——所以時間碼會一字不差地進去又出來。
VTT 轉 CSV 時一條兩行字幕會怎麼輸出?
變成同一個 text 儲存格裡的兩行,並依 CSV 的規定加引號;兩行的配對關係保留,仍屬於同一條字幕。
VTT 轉 CSV 後字幕順序會保留嗎?
會,而且過程中會依開始時間排序,最早的在前。若原始 VTT 是亂序的,CSV 產物會把它排回順序;這改的是檔案結構而不是內容。
CSV 轉回 VTT 會有損失嗎?
那個方向不花代價:CSV 能裝的比 VTT 少,所以轉回去不會再丟東西。但這個方向丟掉的仍留在原地——樣式與格式私有內容無法從 CSV 重建,因為檔案裡沒有任何地方記錄它們原本是什麼。
VTT 轉 CSV 後會保留來源檔案的編碼嗎?
不會,產物固定是 UTF-8、Unix 換行、無 BOM。UTF-16 或 Windows 單字元編碼的來源會在讀入時解碼(結果面板會說明),輸出永遠是同一種 UTF-8 CSV。