跳至主要內容
SubtitleMatrix

SRT 轉 VTT

格式轉換SubRip(SRT)
或者貼上字幕文字

這次轉換會改變什麼

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

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

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 會把檔案傳到伺服器嗎?

不會。檔案在瀏覽器分頁裡解析與改寫,網路上只有頁面本身;字幕的文字、時間與標籤都不會進入任何請求,頁面載入後即使斷網也能繼續使用。

相關工具