Naar de hoofdinhoud
SubtitleMatrix

JSON naar LRC

Of plak ondertiteltekst

Wat deze conversie verandert

5 dingen vervallen of vragen om een beslissing

  • Timing

    de eindtijden van blokken (het uitvoerformaat legt alleen vast wanneer een blok begint)

  • Opmaak

    alle opmaak (vet, cursief, kleur, contour, schaduw)

  • Positionering

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

  • Karaoke

    karaoke-timing (markering per lettergreep)

  • Nauwkeurigheid

    tijdprecisie — de klok van de uitvoer is grover, dus elke tijdstempel wordt afgerond op de dichtstbijzijnde 10 ms

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 LRC. Je sleept een bestand naar het vak of plakt de tekst erin, en je krijgt de LRC-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. LRC kent geen eindtijden, geen stijltabel, geen schermpositie en geen karaoke, en het rekent in honderdsten van een seconde. De lijst hierboven komt uit wat beide formaten elk kunnen uitdrukken, niet uit jouw bestand, dus het antwoord is hetzelfde vóór je iets laadt.

Elke regel van een blok krijgt een eigen tijdstempel tussen vierkante haken. 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 LRC

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

[ti:Fixture: typical]
[00:00.00]Hello world.
[00:00.00]Second line.
[00:02.50]Plain line.
[00:02.50]Styled line.
[00:04.50]Roger: I am here.

In deze uitvoer gaan timing, stijl, positie, karaoke en de fijnere tijdsaanduiding 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

[00:00.00]First.
[00:01.00]Second.
[00:02.00]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

Wat gebeurt er met de eindtijd van elk JSON-blok in LRC?

LRC legt alleen vast wanneer een regel begint, en niets anders: een songtekstspeler laat een regel staan tot de volgende begint, dus een eindtijd zou overbodig zijn. Elke eindtijd valt weg en elke JSON-starttijd blijft onaangeroerd.

Wat gebeurt er met vet, cursief en kleur van JSON naar LRC?

LRC bewaart helemaal geen stijl, dus alles gaat weg: de tags die een regel meedraagt en de items in het styles-object van het document hebben geen plek om te landen. Elke regel wordt als platte tekst geschreven; de woorden zelf blijven staan.

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

LRC kan niet uitdrukken waar een ondertitel wordt getekend. De opgeslagen positie verdwijnt dus bij het verlaten van JSON, en elk blok valt terug op de standaardpositie van de speler: meestal onderaan en gecentreerd.

Wat gebeurt er met karaoketiming van JSON naar LRC?

De timing verdwijnt, de woorden blijven. De karaokespans in een JSON-blok markeren wanneer elke lettergreep oplicht, maar LRC kan geen moment binnen een regel vastleggen. De markeringen gaan eraf en de lettergrepen komen als gewone LRC-tekst binnen.

Waarom zijn de tijdstempels van JSON naar LRC verschoven?

LRC bewaart tijd als [00:04.12] waar JSON 4126 bewaart: honderdsten tegen duizendsten. Elke tijdcode wordt op de dichtstbijzijnde 10 ms afgerond, dus 00:00:04,126 wordt 4,13 seconden. Niets wordt uitgerekt of herordend en geen blok schuift meer dan 5 ms; alleen bij het naast elkaar leggen van bestanden merk je dit verschil.

Hoe ziet de uitvoer eruit als JSON LRC wordt?

Als LRC: geen bloknummers, maar elke regel met een eigen tijdstempel tussen vierkante haken. Elk JSON-blok wordt één LRC-blok, in dezelfde volgorde en met dezelfde tekst.

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

Als twee regels met dezelfde tijdstempel, want zo zegt LRC dat ze bij elkaar horen. Het verband blijft: de twee JSON-regels horen in de LRC-uitvoer nog steeds bij één ondertitel, en een speler toont ze samen.

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

Ja, en ze worden onderweg op starttijd gesorteerd: vroegste eerst. Stond jouw JSON-bestand niet in volgorde, dan zet de LRC-uitvoer de regels weer netjes achter elkaar. Dat is een structurele ingreep, geen inhoudelijke, en ze is bewust.

Kan ik de LRC terug naar JSON omzetten?

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

Blijft de tekencodering van het JSON-bestand behouden in de LRC-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-LRC.

Gerelateerde hulpmiddelen