Naar de hoofdinhoud
SubtitleMatrix

JSON naar VTT

Of plak ondertiteltekst

Wat deze conversie verandert

3 dingen vervallen of vragen om een beslissing

  • Opmaak

    alle opmaak behalve vet en cursief (kleur, contour, schaduw, marges)

  • Positionering

    positionering op het scherm (elk blok keert terug naar de standaardpositie)

  • Karaoke

    karaoke-timing (markering per lettergreep)

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 zet JSON om naar VTT. Je sleept een bestand naar het vak of plakt de tekst erin, en je krijgt de VTT-versie terug. De conversie draait volledig in je browser: er wordt niets geüpload en je hebt geen account nodig.

De twee formaten bewaren niet hetzelfde. De stijltabel, de schermpositie en de karaoketiming van JSON hebben in VTT geen plek; nadruk zoals cursief en vet komt wel als tag mee. De lijst hierboven komt uit wat beide formaten elk kunnen uitdrukken, niet uit jouw bestand.

VTT begint met WEBVTT en elke cue kan een identificatieregel boven de tijdcode hebben. Eén bestand kan, een heel seizoen ook: de wachtrij werkt ze in volgorde af en levert één ZIP op.

Voorbeelden

Een typisch JSON-bestand, omgezet naar VTT

Invoer

{
  "version": 1,
  "title": "Fixture: typical",
  "fps": 25,
  "styles": {
    "Default": {
      "name": "Default",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#FFFFFF",
      "bold": false,
      "italic": false
    }
  },
  "generator": "subtitlematrix fixtures",
  "cues": [
    {
      "id": "1",
      "start": 0,
      "end": 2000,
      "lines": [
        "Hello world.",
        "Second line."
      ],
      "style": "Default",
      "position": {
        "x": 100,
        "y": 200,
        "align": "center"
      }
    },
    {
      "id": "2",
      "start": 2500,
      "end": 4000,
      "lines": [
        "Plain line.",
        {
          "text": "Styled line.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 6
            }
          ]
        }
      ]
    },
    {
      "id": "3",
      "start": 4500,
      "end": 6000,
      "lines": [
        "Roger: I am here."
      ],
      "speaker": "Roger"
    }
  ]
}

Uitvoer

WEBVTT

1
00:00:00.000 --> 00:00:02.000
Hello world.
Second line.

2
00:00:02.500 --> 00:00:04.000
Plain line.
<i>Styled</i> line.

3
00:00:04.500 --> 00:00:06.000
Roger: I am here.

In deze uitvoer gaan de stijltabel, positie en karaoke verloren. Al het andere komt regel voor regel overeen.

Dezelfde conversie op een rommelige invoer

Invoer

[
    { "start": 0, "end": 1000, "lines": ["First."] },
    { "start": 1000, "end": 2000, "text": "Second." },
    "not an object",
    { "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]

Uitvoer

WEBVTT

00:00:00.000 --> 00:00:01.000
First.

00:00:01.000 --> 00:00:02.000
Second.

00:00:02.000 --> 00:00:03.000
Third.

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

Veelgestelde vragen

Welke stijl blijft van JSON naar VTT bewaard?

Nadruk, als tag in de tekst: vet, cursief, onderstreept en een kleur komen eruit als <b>, <i>, <u> en <font color="…">, waar browsers iets mee doen. Wat het VTT-bestand niet meeneemt, is de stijltabel waar JSON op leunt — lettertype, grootte, rand, schaduw en marges verdwijnen, en de pagina die de ondertitels toont, stylet ze met eigen CSS.

Wat gebeurt er met de positie op het scherm van JSON naar VTT?

VTT kan in deze uitvoer niet uitdrukken waar een ondertitel wordt getekend. De positie die bij elk blok hoort, valt weg bij het verlaten van JSON, en elk blok keert terug naar de standaardpositie van de speler: meestal onderaan in het beeld en gecentreerd.

Wat gebeurt er met karaoketiming van JSON naar VTT?

De timing verdwijnt, de woorden blijven. Karaoke zit in de spans die een JSON-blok meedraagt en die markeren wanneer elke lettergreep oplicht; VTT kan geen moment binnen een regel vastleggen, dus de markeringen gaan eraf en de lettergrepen komen als gewone VTT-tekst binnen.

Hoe ziet de uitvoer eruit als JSON VTT wordt?

Als VTT: boven elk blok staat een optionele identificatieregel, die geen enkele speler toont. Elk JSON-blok wordt één VTT-blok, in dezelfde volgorde en met dezelfde tekst.

Zijn de JSON-tijden exact in het VTT-bestand?

Ja, tot op de milliseconde, en fijner gaat geen van beide formaten. JSON schrijft een moment als 4126, VTT schrijft hetzelfde moment als 00:00:04.126; er wordt niets afgerond of verschoven, en een blok dat 2,9 seconden in beeld stond, staat dat nog steeds.

Hoe komt een JSON-blok van twee regels in VTT terecht?

Als twee regels, de ene onder de andere. Het verband blijft: de twee JSON-regels horen in de VTT-uitvoer nog steeds bij één ondertitel, en een speler toont ze samen.

Blijft de volgorde van JSON-blokken in de VTT-uitvoer behouden?

Ja, en ze worden onderweg op starttijd gesorteerd: vroegste eerst. Stond jouw JSON-bestand niet in volgorde, dan zet de VTT-uitvoer de blokken weer netjes achter elkaar. Dat verandert de structuur van het bestand, niet de inhoud, en het is bewust.

Kan ik de VTT terug naar JSON omzetten?

Ja, en die richting heeft een eigen lijst: VTT naar JSON verliest formaatspecifieke inhoud. Die lijst verschilt van de lijst hierboven, omdat beide formaten andere dingen bewaren.

Blijft de tekencodering van het JSON-bestand behouden in de VTT-uitvoer?

Nee. De uitvoer is UTF-8 met Unix-regeleinden en zonder BOM, wat het JSON-bestand ook gebruikte. Een bestand in UTF-16 of in een Windows-codering met één byte wordt bij het inlezen gedecodeerd (het resultaatpaneel zegt het als dat gebeurt); wat eruit komt is altijd dezelfde UTF-8-VTT.

Gerelateerde hulpmiddelen