UltKit

SRT 轉 VTT

瀏覽器的 <track> 元素只能播放 WebVTT 字幕,所以在 VLC 正常顯示的 SRT 檔,放到網頁上卻什麼都看不到。在這裡轉成 VTT,同一份字幕就能在任何 HTML5 播放器中顯示。

字幕轉檔

或將SRT, VTT, ASS … 檔案拖曳到這裡 ·

每個檔案最大 95 MB· 最多 20 個檔案· 30 分鐘後刪除

輸出

檔案會在我們的伺服器上處理,並於 30 分鐘後刪除。

使用方式

  1. 1

    拖入 .srt 檔案

    加入一個字幕檔,或每種語言各加一個,最多 20 個檔案,每個不超過 95 MB。系統會偵測舊式編碼,並改寫為 WebVTT 所要求的 UTF-8。

  2. 2

    視需要調整時間

    若只是單純轉換,保持預設即可。如果字幕比影片早出現或晚出現,請在進階設定的平移時間軸中輸入秒數。

  3. 3

    轉換為 WebVTT

    按下 Convert to WebVTT (VTT),再下載 .vtt 檔案。將檔案與影片上傳到同一個位置;我們這邊的副本會在 30 分鐘後刪除。

上傳 SRT 並按下 Convert to WebVTT (VTT)。你會得到一個具備必要 WEBVTT 標頭、毫秒以句點分隔、文字為 UTF-8 的檔案,可直接用於 <track> 元素、Video.js、Plyr 或課程平台。

為什麼網頁播放器需要 VTT 而不是 SRT

SRT 約在 2000 年起源於 DVD 擷取圈,後來成為桌面播放器、編輯軟體和下載字幕的預設格式。WebVTT 於 2010 年為網路設計,以 SRT 的語法為基礎,HTML 標準也將它定為 <track> 元素使用的格式。Chrome、Firefox、Safari 和 Edge 都原生支援,而且沒有任何一個會透過 track 讀取 SRT。

兩者在文字編輯器中看起來幾乎一樣,所以差異常讓人措手不及。VTT 檔案必須以 WEBVTT 開頭、必須是 UTF-8,且 SRT 寫成 00:01:05,300 的時間,VTT 要寫成 00:01:05.300。此外,VTT 還能包含位置、樣式和註解,這些是 SRT 從來沒有的。因此從 SRT 轉成 VTT 不會損失任何內容;反過來透過 VTT 轉 SRT 轉換時,這些額外內容就會被捨棄。

取得 .vtt 之後,依下方範例從網頁連結它。如果影片的格式瀏覽器無法播放,例如 iPhone 拍的 .mov,這部分可參考 MOV 轉 MP4 教學。

搭配已轉換中文字幕的影片 HTML
<video controls src="lecture.mp4">
  <track kind="subtitles" src="lecture.zh-TW.vtt"
         srclang="zh-TW" label="中文(台灣)" default>
</video>

SRT 與 VTT 比較:所有重要差異

同一則字幕在兩種格式中的寫法
項目SRTWebVTT
檔案第一行字幕編號 1WEBVTT
時間戳記00:01:05,30000:01:05.300(小時可省略)
字幕編號必要選用的識別碼
文字編碼不限,常為舊式字碼頁僅限 UTF-8
位置與對齊沒有標準字幕設定,例如 line 和 align
樣式<i>、<b>、<u>、<font><i>、<b>、<u>,以及用 CSS 設定樣式的類別
伺服器上的 MIME 類型application/x-subriptext/vtt

SRT

SubRip 字幕

SRT 是 SubRip 的字幕格式,SubRip 是約在 2000 年出現的免費 Windows 程式,用來從影片中擷取字幕。每一筆字幕是一段純文字,包含編號、開始與結束時間和字幕文字。它是支援度最廣的字幕格式,VLC、YouTube、Facebook、影片編輯軟體和智慧電視都能使用。SRT 只有基本格式,沒有定位或樣式的標準。

壓縮方式
–
透明度
–
動畫
–
推出年份
SubRip
SRT 轉檔工具

VTT

WebVTT 字幕

VTT 是 Web Video Text Tracks 格式,由 WHATWG 和 W3C 於 2010 年前後為 HTML5 影片開發。它看起來與 SRT 相似,但多了 WEBVTT 標頭,並支援定位、樣式、說話者標籤和中繼資料。瀏覽器透過 <track> 元素使用它來顯示字幕,串流平台和 YouTube 也接受。部分桌面播放器和編輯器則預期使用 SRT。

壓縮方式
–
透明度
–
動畫
–
推出年份
2010 · W3C / WHATWG
VTT 轉檔工具

HTML5 影片只會透過 track 元素載入 WebVTT,因此為桌面播放器製作的 SRT 字幕,必須先轉成 VTT 才能顯示在網頁上。

VTT 字幕在瀏覽器中不顯示

  • 字幕在線上可正常顯示,但從硬碟開啟 HTML 檔案時卻不行

    瀏覽器會封鎖從 file:// 頁面載入的字幕軌。請透過本機網頁伺服器或在實際網站上測試。

  • 字幕軌從其他網域載入,內容卻是空的

    在 <video> 元素加上 crossorigin,並在存放 .vtt 的伺服器 CORS 標頭中允許你的網站。

  • 伺服器以 text/plain 傳送檔案

    將伺服器設定為以 text/vtt 提供 .vtt;有些播放器會拒絕其他類型。

  • 每則字幕都早了一秒出現

    以正值的平移時間軸(例如 1)重新轉換,並取代原檔案。

SRT 轉 VTT 常見問題

轉換器會修改檔案中的哪些內容?

它會在檔案開頭加上 WEBVTT 行,把毫秒前的逗號換成句點,並以 UTF-8 儲存。WebVTT 允許把字幕編號當作選用的識別碼,字幕文字本身不會更動。

可以直接把 .srt 改名成 .vtt 嗎?

不行。沒有 WEBVTT 標頭、時間戳記又使用逗號時,瀏覽器會拒絕該字幕軌,或略過每一則字幕。檔案必須重新寫過,在這裡只需要一秒鐘。

斜體和粗體會保留嗎?

可以,<i>、<b> 和 <u> 在兩種格式中都存在。SRT 的 <font color> 標籤在 WebVTT 中沒有直接對應,因為 WebVTT 是透過 CSS 類別為字幕上色,所以如果檔案大量使用它,請開啟移除格式標籤。

我的課程平台需要哪種字幕檔?

多數學習平台和網頁播放器都支援 WebVTT,許多也接受 SRT。如果上傳表單只列出 .vtt,請在這裡轉換;如果只列出 .srt,請用 VTT 轉 SRT 做反向轉換。

可以把字幕放在畫面上方嗎?

WebVTT 透過字幕設定支援,例如 line:0,轉換後可以用文字編輯器自行加入。SRT 沒有儲存位置的標準方式,因此轉換後的字幕會從預設的底部位置開始。

如何為同一部影片加入多種語言字幕?

先轉換每種語言的 SRT,再為每個檔案各加一個 <track>,並設定各自的 srclang 和 label。觀眾可以從播放器的字幕選單選擇語言。