LRC 轉 VTT
或者貼上字幕文字
選項
當來源檔案沒有結束時間時使用(純文字、LRC)。輸出裡的時間軸是在這裡產生的,不是轉換來的,所以填多少就是多少。
這次轉換會改變什麼
有 1 項會被捨棄或需要你決定
- 時間
字幕的結束時間——來源檔案不記錄這些時間,因此輸出中的結束時間是產生出來的,而非轉換而來
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
LRC 轉 VTT 得到的是 WebVTT:`WEBVTT` 標頭之後,每一行歌詞寫成一條字幕,時間形如 `00:00:12.000 --> 00:00:15.300`。產物可以直接放進網頁的 `<track>`,或交給支援 VTT 的播放器。
終點取下一行的開始,最後一行用頁面設定的時長補,並在報告裡註明;同一個時間戳的多行合成一條多行字幕,避免兩條字幕在同一個時刻互相爭位。有損說明記為 timing,因為終點不在 LRC 檔案裡。
`[ti:]`、`[ar:]`、`[al:]`、`[offset:]` 都不會進到 VTT,偏移只讀取不套用;VTT 的樣式能力在 LRC 裡沒有來源,所以這一層沒有額外損失。輸出是 UTF-8、LF、無 BOM,字幕依開始時間排序。
範例
一份典型的 LRC 檔轉成 VTT
輸入
[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.輸出
WEBVTT
00:00:12.000 --> 00:00:15.300
First line of the song.
00:00:15.300 --> 00:00:18.000
Second line.
Second line, translated.
00:00:18.000 --> 00:00:21.500
00:00:21.500 --> 00:00:23.500
Final line.
這個方向丟掉的是結束時間;開始時間與文字逐行對應,空歌詞行也保留。
同一轉換遇到一份格式凌亂的檔案
輸入
[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]輸出
WEBVTT
00:00:03.000 --> 00:00:05.500
Out of order.
00:00:05.500 --> 00:00:07.000
Leading zero omitted, one decimal.
00:00:07.000 --> 00:00:09.000
Second with no centiseconds.
Repeated chorus line.
00:00:09.000 --> 00:00:12.000
Repeated chorus line.
00:00:12.000 --> 00:00:14.000
真實檔案常見的狀況:BOM、混合換行、缺前導零的時間戳、重複的副歌行。解析器不會中斷,讀不出的部分會進有損說明。
常見問題
LRC 轉 VTT 時,最後一行歌詞的終點怎麼定?
用頁面設定的時長補,預設兩秒;報告會註明這一條字幕的終點是生成的,因為檔案裡沒有下一行可以借。
LRC 轉 VTT 後,`WEBVTT` 標頭後面直接就是歌詞嗎?
標頭之後要先空一行,才是第一條字幕;每條字幕是時間行加正文,區塊之間再空一行,這是 VTT 的語法要求。
LRC 的 `[offset:]` 標籤在 VTT 產物裡會生效嗎?
不生效。偏移會被讀取但不加進時間軸,產物的時間與檔案字面一致;要調整就得自己再做一次平移。
LRC 轉 VTT 時,雙語歌詞會被拆成兩條字幕嗎?
不會。同一個時間戳的多行進到同一條字幕,播放器一次顯示兩行;拆開只會讓兩條同時出現、互相遮住。
LRC 的百分秒進到 VTT 後會變粗嗎?
不會。VTT 的時間行寫到毫秒,`[00:12.00]` 成為 `00:00:12.000`,`[00:15.30]` 成為 `00:00:15.300`。
VTT 轉回 LRC 會失去什麼?
會失去結束時間、樣式、精度與格式私有內容;LRC 只保留開始時間與文字,與本頁方向的清單並不相同。