VTT 轉 SRT
或者貼上字幕文字
這次轉換會改變什麼
有 2 項會被捨棄或需要你決定
- 樣式
全部樣式(粗體、斜體、顏色、外框、陰影)
- 格式專屬內容
來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 WebVTT 轉成 SRT。拖入檔案或貼上文字,就會拿回 SRT 版本;轉換全程在瀏覽器裡完成,不上傳、不需要帳號,頁面載入後斷網也能繼續使用。
兩種格式裝的是同一批字幕,所以文字、換行與時間都原封不動帶到毫秒。改變的是語法:每個 00:00:01.000 形式的 VTT 時間碼會變成 00:00:01,000,因為 SRT 用逗號而 WebVTT 用點;WEBVTT 標頭那一列會消失,因為 SRT 檔案沒有標頭。
帶不過來的是 WebVTT 放在字幕之外的所有東西。標頭列可以帶一句註解(WEBVTT - exported from some platform),檔案裡可以有 NOTE、STYLE 與 REGION 區塊,而 STYLE 區塊可能裝著整份檔案的版式規則;時間碼後面也可能跟著 align:start 或 position:10% 這類設定。SRT 的語法沒有位置放這些東西,所以它們被丟棄而不是重新詮釋;字幕識別碼則變成單純的連續編號,因為 SRT 的計數器必須是數字。上方報告會列出這些無處可去的內容,並在你載入檔案後填上實際數量。
不規則輸入也能讀:缺少標頭、Windows 換行、時間碼前一列雜訊或 BOM 都不會報錯,輸出每次都以同樣整齊的結構寫回。一次拖入一個檔案或整季影集,佇列依序處理、可中途停止,結果打包成單一 ZIP。
範例
一份典型的 VTT 檔案轉成 SRT
輸入
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>.
輸出
1
00:00:01,000 --> 00:00:04,000
Hello there.
2
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.
輸出
1
00:00:01,000 --> 00:00:02,000
No header, two lines before the timecode.
真實檔案常見的損壞:混合換行、散落空白、留空欄位。對照上面的乾淨範例,可以看出解析器容忍到什麼程度。
常見問題
VTT 轉 SRT 後時間會被改變嗎?
不會。WebVTT 的 00:00:01.250 與 SRT 的 00:00:01,250 是同一個時刻的兩種寫法,每個起止時間都毫秒不差地帶過去,只有秒與毫秒之間的字元改變。
VTT 的 WEBVTT 標頭與 NOTE、STYLE、REGION 區塊轉成 SRT 後怎麼了?
被丟棄。SRT 沒有標頭列也沒有區塊語法,沒有地方放它們。其中 STYLE 最要緊,它常常裝著整份檔案的版式規則,而不只是一句註解;若播放器依賴它,這部分樣式得搬到別處。
VTT 時間碼後的 align:start 或 position:10% 轉成 SRT 後去哪了?
一樣被丟棄。SRT 無法把字幕放到螢幕上的指定位置;如果產物需要定位,請改轉 ASS,那裡的位置寫在 \an7 與 \pos 這類覆寫碼裡,會跟著文字一起走。
VTT 轉 SRT 後 cue 識別碼還在嗎?
不在。WebVTT 允許 intro 或 sign-1 這類自由形式的識別碼,轉換器也讀得到,但 SRT 的計數器按慣例必須是數字,所以產物會重新編號成 1、2、3;嚴格的 SRT 解析器會拒絕非數字計數器,因此識別碼不會原樣保留。
受保密的 VTT 能在這頁轉成 SRT 嗎?
檔案不會離開你的機器。解析與寫出都在瀏覽器裡進行,沒有任何請求帶著你的字幕出去;頁面載入後,斷網也能繼續使用。