跳至主要內容
SubtitleMatrix

VTT 轉 JSON

格式轉換WebVTT(VTT)
或者貼上字幕文字

這次轉換會改變什麼

有 1 項會被捨棄或需要你決定

  • 格式專屬內容

    來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們

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

這一頁把 WebVTT 轉成 JSON。拖入檔案或貼上文字,就會拿回一份描述同一批字幕的純 JSON 檔案;轉換全程在瀏覽器裡完成,不上傳、不需要帳號,頁面載入後斷網也能繼續使用。

JSON 用的是本站自有、有說明的字幕 schema,形狀刻意照著整個轉換器使用的字幕模型:一個版本號,然後每條字幕一筆,帶識別碼、整數毫秒的起止時間,以及由文字與行內區間組成的 lines。時間維持整數毫秒而不是改寫成時間碼,一條字幕的多行保持分開而不是併成一串,所以產物是給你的腳本讀的,不是給播放器讀的。

WebVTT 存的東西幾乎都能用這個形狀表達,所以上方的報告很短。沒有對應鍵的是字幕之外的部分:WEBVTT 標頭與其註解、NOTE/STYLE/REGION 區塊,以及時間碼後面的設定例如 align:start——它們會被丟棄,不會被塞進某個備用欄位,報告會在下載前先數給你聽。字幕識別碼是反方向的例外:與 SRT 不同,這個 schema 有 id 欄位,所以 intro 會原樣保留。

不規則輸入也能讀:缺少標頭、Windows 換行、時間碼前的雜訊列或 BOM 都不會報錯。一次拖入一個檔案或整季影集,佇列依序處理、可中途停止,結果打包成單一 ZIP。

範例

一份典型的 VTT 檔案轉成 JSON

輸入

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>.

輸出

{
  "version": 1,
  "cues": [
    {
      "id": "intro",
      "start": 1000,
      "end": 4000,
      "lines": [
        "Hello there."
      ]
    },
    {
      "start": 4500,
      "end": 8000,
      "lines": [
        {
          "text": "Second line with italics.",
          "tags": [
            {
              "kind": "italic",
              "start": 17,
              "end": 24
            }
          ]
        }
      ]
    }
  ]
}

這份產物遺失了格式私有內容;其餘部分逐列一致。

同一轉換遇到一份格式不規則但可讀的輸入

輸入

a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.

輸出

{
  "version": 1,
  "cues": [
    {
      "start": 1000,
      "end": 2000,
      "lines": [
        "No header, two lines before the timecode."
      ]
    }
  ]
}

真實檔案常見的損壞:混合換行、散落空白、留空欄位。對照上面的乾淨範例,可以看出解析器容忍到什麼程度。

常見問題

VTT 轉 JSON 後產物長什麼樣子?

一個版本號加一個 cues 陣列。每條字幕有可選的 id、整數毫秒的 start 與 end,以及 lines 陣列;每一行不是字串,就是帶 text 與行內區間(斜體、粗體等,以起止位移表示)的物件。沒有時間碼要解析,也沒有百分秒要留意。

VTT 轉 JSON 的遺失清單為什麼這麼短?

因為這個 schema 是照轉換器的字幕模型建的,幾乎涵蓋 WebVTT 的所有內容;剩下的是 WebVTT 放在字幕之外的材料:標頭、其註解、NOTE/STYLE/REGION 區塊,以及每條字幕的設定。

VTT 轉 JSON 後 cue 識別碼會保留嗎?

會。WebVTT 允許在字幕前寫 intro 或 sign-1 這類自由形式的識別碼,而這個 schema 有 id 欄位,所以原樣寫出;改轉 SRT 就會重新編號,因為 SRT 的計數器必須是數字。

VTT 轉 JSON 後時間會改變嗎?

不會。兩邊都以整數毫秒工作,所以 00:00:01.234 會變成 1234,再轉回來仍是同一個數,沒有捨入也沒有位移。

受保密的 VTT 文字稿能在這頁轉成 JSON 嗎?

可以。解析與寫出都在瀏覽器裡進行,拖進來的檔案不會送到伺服器;對這一對格式尤其重要,因為 JSON 是腳本或流程要吃的格式,而那些文字稿往往正是不能離開組織的資料。

相關工具