Naar de hoofdinhoud
SubtitleMatrix

VTT naar JSON

FormaatconversieWebVTT (VTT)
Of plak ondertiteltekst

Wat deze conversie verandert

1 ding vervalt of vraagt om een beslissing

  • Formaatspecifieke inhoud

    inhoud die het bronformaat buiten zijn blokken bewaart (blokken die geen ondertitel zijn, koptekst, instellingen per blok, uitgecommentarieerde gebeurtenissen) — het doelformaat heeft er geen plek voor

Deze lijst komt uit de capaciteitenmatrix voor deze twee formaten, niet uit het bestand dat je hebt geladen. Een specifiek bestand kan meer verliezen wanneer het kenmerken gebruikt die het formaat toestaat maar de matrix niet modelleert.

Deze pagina maakt van een WebVTT-bestand gestructureerde data: een JSON-document met een versienummer en een array cues. Elke cue houdt een optioneel id, een start en een eind als hele milliseconden, en een array regels. Een regel zonder opmaak blijft een gewone tekenreeks; een regel met cursief, vet of kleur wordt een object met de tekst en de tags die erop van toepassing zijn, elk met een begin- en eindpositie.

Daarmee gaat er bijna niets verloren. Wat het schema niet kan dragen, is wat WebVTT buiten de cues bewaart: de WEBVTT-kop, de NOTE-, STYLE- en REGION-blokken en de instellingen achter een tijdstempel. Dat is de hele lijst, en dat is de reden dat hij hier kort is — het formaat is gebouwd om alles te bevatten wat het cue-model van de omzetter aankan.

Een blok-ID zoals intro blijft bewaard, want het schema heeft er een veld voor. Terug omzetten geeft je de ondertitels weer, en het hele proces draait in je browser.

Voorbeelden

Een typisch VTT-bestand, omgezet naar JSON

Invoer

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

Uitvoer

{
  "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
            }
          ]
        }
      ]
    }
  ]
}

In deze uitvoer verloren: formaateigen inhoud. Al het andere komt regel voor regel overeen.

Dezelfde omzetting op een rommelige invoer

Invoer

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

Uitvoer

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

Zo zien echte bestanden eruit — gemengde regeleinden, losse spaties, lege velden. Vergelijk met het nette voorbeeld hierboven om te zien wat de parser vergeeft.

Veelgestelde vragen

Hoe ziet de JSON-uitvoer van VTT eruit?

Een versienummer en een cues-array. Elke cue heeft een optioneel id, een start en een eind in hele milliseconden, en een lines-array waarin elke regel een tekenreeks is of een object met de tekst plus de spans die erop staan — cursief, vet en dergelijke — als begin- en eindposities.

Waarom is de lijst met verliezen bij VTT naar JSON zo kort?

Omdat het schema is gebouwd om alles te dragen wat het cue-model van de omzetter aankan, en dat dekt bijna alles wat WebVTT heeft. Wat overblijft, is het materiaal dat WebVTT buiten de cues bewaart: de kop, de opmerking erin, de NOTE-, STYLE- en REGION-blokken en de instellingen per cue.

Blijven de blok-ID’s van VTT bewaard in JSON?

Ja. WebVTT staat een vrije ID toe zoals intro of sign-1 vóór een cue, en het schema heeft daarvoor een id-veld, dus het wordt ongewijzigd uitgeschreven. Naar SRT omzetten zou de cues juist opnieuw nummeren, omdat de teller daar een getal moet zijn.

Veranderen de tijden van VTT naar JSON?

Nee. Beide kanten werken met hele milliseconden, dus 00:00:01.234 wordt 1234 en terug, zonder afronding en zonder verschuiving. Er zijn geen tijdcodes meer om te parsen en geen centiseconden om op te letten.

Is het veilig om een transcriptie door deze pagina te halen?

Ja. Lezen en schrijven gebeuren in de browser, dus het bestand dat je hier neerzet, gaat nooit naar een server. Dat weegt bij deze combinatie zwaarder dan anders, omdat JSON juist is wat een script of pijplijn consumeert — en dat zijn vaak de transcripties die het gebouw niet uit mogen.

Gerelateerde hulpmiddelen