VTT 轉 LRC
或者貼上字幕文字
這次轉換會改變什麼
有 4 項會被捨棄或需要你決定
- 時間
字幕的結束時間(輸出格式只記錄字幕何時開始)
- 樣式
全部樣式(粗體、斜體、顏色、外框、陰影)
- 精確度
時間精確度——輸出的時間刻度較粗,因此每個時間戳記都會四捨五入到最接近的 10 毫秒
- 格式專屬內容
來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 VTT 轉成 LRC。拖入檔案或貼上文字,就會拿回 LRC 版本;轉換全程在瀏覽器裡完成,不上傳、不需要帳號。
兩種格式存的東西不同,而且差別不是外觀:時間、樣式、精度與格式私有內容在 LRC 裡都沒有落點。清單來自兩種格式各自能表達什麼,而不是你的檔案,所以載入之前答案就一樣。LRC 只記錄一列何時開始,歌詞播放器會讓它留到下一列開始,因此結束時間是多餘的;時間寫成 [mm:ss.xx],00:00:04.126 會取整成 [00:04.13],每條最多移動 5 毫秒。
一個檔案可以,整季也行:佇列依序處理,結果一起打包成單一 ZIP。樣式全部消失——寫在字幕文字裡的 <b>、<i>,或檔案 STYLE 區塊裡的規則,在 LRC 都只能寫成純文字;WEBVTT 標頭、NOTE/STYLE/REGION 區塊與 cue 設定同樣丟棄。
範例
一份典型的 VTT 檔案轉成 LRC
輸入
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>.
輸出
[00:01.00]Hello there.
[00:04.50]Second line with italics.
這份產物遺失了結束時間、樣式、精度與格式私有內容;其餘部分逐列一致。
同一轉換遇到一份格式不規則但可讀的輸入
輸入
a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.
輸出
[00:01.00]No header, two lines before the timecode.
真實檔案常見的損壞:混合換行、散落空白、留空欄位。對照上面的乾淨範例,可以看出解析器容忍到什麼程度。
常見問題
VTT 轉 LRC 後每條字幕的結束時間去哪了?
LRC 只記錄一列何時開始,歌詞播放器會讓它留到下一列開始,所以結束時間是多餘的;每個結束時刻都會被丟棄,每個 VTT 的開始時刻則原樣保留。
VTT 轉 LRC 時粗體、斜體與顏色會怎麼處理?
LRC 不存任何樣式,所以全部消失:寫在字幕文字裡的 <b>、<i>,或檔案 STYLE 區塊裡的規則,都沒有落點,每一列都寫成純文字;文字本身不受影響。
VTT 轉 LRC 時時間碼為什麼會移動?
LRC 以百分秒存時間,VTT 以毫秒,所以每個時間碼會取整到最近的 10 毫秒:00:00:04.126 會變成 4.13 秒。沒有任何字幕移動超過 5 毫秒,但若要和其他檔案對齊,這裡就是唯一不再精確的地方。
VTT 的 NOTE、STYLE 與 REGION 區塊轉成 LRC 後去哪了?
被丟棄。WebVTT 可以帶標頭、註解、樣式區塊、區域定義與每條字幕的 align 或 position 設定,LRC 沒有地方放——它存的是 cue,不是整份檔案;cue 本身、文字與時間則完整通過。
VTT 轉 LRC 後產物長什麼樣子?
像 LRC:沒有字幕編號,每一列都帶著自己的方括號時間戳。每條 VTT 字幕會變成一條 LRC 歌詞,順序與文字都相同。
VTT 轉 LRC 時一條兩行字幕會怎麼輸出?
變成兩列時間戳相同的歌詞,這是 LRC 表示「這兩句屬於同一條」的方式;兩行的配對關係保留,播放器會一起顯示。
VTT 轉 LRC 後字幕順序會保留嗎?
會,而且過程中會依開始時間排序,最早的在前。若原始 VTT 是亂序的,LRC 產物會把它排回順序;這改的是檔案結構而不是內容。
LRC 轉回 VTT 會有什麼代價?
反方向有自己的清單:LRC 轉 VTT 會遺失時間,因為 LRC 沒有結束時刻,寫回 VTT 時必須補一個預設時長;那份清單和上方不同,因為兩種格式各自保留的東西不一樣。
VTT 轉 LRC 後會保留來源檔案的編碼嗎?
不會,產物固定是 UTF-8、Unix 換行、無 BOM。UTF-16 或 Windows 單字元編碼的來源會在讀入時解碼(結果面板會說明),輸出永遠是同一種 UTF-8 LRC。