SRT 轉 VTT
或者貼上字幕文字
這次轉換會改變什麼
這個方向不會遺失內容 —— 來源格式的每一項特性在目標格式裡都有地方可去。
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
SRT 與 WebVTT 裝的是同一批字幕,只是外殼不同;這一頁把檔案從前者搬到後者,時間軸、字幕文字、換行與行內格式都原樣保留,改變的只有周圍的語法。
每個 00:00:01,000 形式的時間碼會變成 00:00:01.000:WebVTT 在秒與毫秒之間用小數點,SRT 用逗號,兩者指的是同一刻。檔案開頭還會補上播放器要求的 WEBVTT 這一列;手工編輯過的 .vtt 打不開,最常見的原因就是少了它。
SRT 的編號會保留,WebVTT 把它當成每條字幕前的可選識別碼,播放器不依賴它,但兩份檔案並排對照時很好用。BOM、Windows 換行、只有一位數的小時欄位、正文為空的字幕都能正常讀取;一次拖入整季檔案,佇列依序處理、可中途停止,結果打包成一個 ZIP,轉換全程在瀏覽器裡完成,沒有任何上傳。
範例
一份典型的 SRT 檔案轉成 VTT
輸入
1
00:00:01,000 --> 00:00:03,500
Hello there.
2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.
3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.
輸出
WEBVTT
1
00:00:01.000 --> 00:00:03.500
Hello there.
2
00:00:03.500 --> 00:00:06.000
<i>Whispering</i> now.
And a second line.
3
00:00:06.000 --> 00:00:09.250
<b>Bold</b> statement.
這個方向沒有遺失東西:時間、編號、標籤與換行都保留,只是外殼換成 WebVTT。
同一轉換遇到一份格式不規則的輸入
輸入
1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.
2
00:00:03,500 --> 00:00:06,000
3
00:00:08,000 --> 00:00:09,000
Last one.
輸出
WEBVTT
1
00:00:01.000 --> 00:00:03.500
<b>Bold</b> and <i>italic</i>.
2
00:00:03.500 --> 00:00:06.000
3
00:00:08.000 --> 00:00:09.000
Last one.
BOM、CRLF 與正文為空的字幕都在這個範例裡;解析器全部接受,輸出仍是結構整齊的 VTT。
常見問題
SRT 轉 VTT 後時間碼會有什麼變化?
SRT 的 00:00:01,250 與 WebVTT 的 00:00:01.250 是同一個時刻的兩種寫法,所以每個起止時間都毫秒不差地帶過去,只有秒與毫秒之間的字元從逗號變成小數點。
SRT 轉 VTT 後字幕編號會保留嗎?
會,而且位置相同。WebVTT 把字幕前的數字當成識別碼,所以 SRT 的 1、2、3 會原樣出現在產物裡;它們不影響播放,但兩份檔案對照時很好用。
SRT 轉 VTT 時斜體與粗體標籤會保留嗎?
會。SRT 與 WebVTT 都用尖括號標籤,所以輸入裡的一段斜體就是輸出裡的一段斜體,不改寫也不翻譯。
SRT 轉 VTT 後檔案為什麼以 WEBVTT 開頭?
那是這個格式的第一列。其餘部分看起來都像 WebVTT、卻不是以 WEBVTT 開頭的檔案會被播放器拒絕,這正是手工編輯的 .vtt 最常見的載入失敗原因;轉換器會替你補上。
SRT 轉 VTT 會把檔案傳到伺服器嗎?
不會。檔案在瀏覽器分頁裡解析與改寫,網路上只有頁面本身;字幕的文字、時間與標籤都不會進入任何請求,頁面載入後即使斷網也能繼續使用。