Naar de hoofdinhoud
SubtitleMatrix

LRC naar JSON

FormaatconversieSongteksten (LRC)
Of plak ondertiteltekst

Opties

Wordt gebruikt wanneer de bron geen eindtijden heeft (platte tekst, LRC). De tijdlijn in de uitvoer wordt hier gegenereerd in plaats van omgerekend, dus dit getal is wat je krijgt.

Wat deze conversie verandert

1 ding vervalt of vraagt om een beslissing

  • Timing

    de eindtijden van blokken — de bron legt ze niet vast, dus die van de uitvoer worden gegenereerd in plaats van omgerekend

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 LRC om naar JSON. De uitvoer is één object met een versienummer en een lijst cues; elke cue heeft een start, een eind en de tekstregels die erbij horen. Dat is prettig als je de ondertitels later in een eigen programma wilt inlezen.

LRC levert alleen starttijden. De JSON-uitvoer vult het einde aan met de start van de volgende regel, en de laatste cue krijgt de duur die je op deze pagina kiest. Regels met hetzelfde tijdstempel worden één cue met meerdere regels, zodat een vertaling niet losraakt van het origineel.

De kop van het LRC-bestand verdwijnt: JSON heeft geen veld voor titel, artiest of offset. Dat verlies staat in het overzicht. De omzetting draait volledig in je browser; je bestanden gaan nergens naartoe, en een reeks bestanden komt als één ZIP terug.

Voorbeelden

Een gewoon LRC-bestand, omgezet naar JSON

Invoer

[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.

Uitvoer

{
  "version": 1,
  "title": "Sample Song",
  "cues": [
    {
      "start": 12000,
      "end": 15300,
      "lines": [
        "First line of the song."
      ]
    },
    {
      "start": 15300,
      "end": 18000,
      "lines": [
        "Second line.",
        "Second line, translated."
      ]
    },
    {
      "start": 18000,
      "end": 21500,
      "lines": [
        ""
      ]
    },
    {
      "start": 21500,
      "end": 23500,
      "lines": [
        "Final line."
      ]
    }
  ]
}

In deze uitvoer gaat timing verloren: de eindwaarden zijn uit de volgende regel afgeleid. De tekst en de groepering per cue blijven gelijk.

Dezelfde omzetting op een weerbarstige invoer

Invoer

[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]

Uitvoer

{
  "version": 1,
  "cues": [
    {
      "start": 3000,
      "end": 5500,
      "lines": [
        "Out of order."
      ]
    },
    {
      "start": 5500,
      "end": 7000,
      "lines": [
        "Leading zero omitted, one decimal."
      ]
    },
    {
      "start": 7000,
      "end": 9000,
      "lines": [
        "Second with no centiseconds.",
        "Repeated chorus line."
      ]
    },
    {
      "start": 9000,
      "end": 12000,
      "lines": [
        "Repeated chorus line."
      ]
    },
    {
      "start": 12000,
      "end": 14000,
      "lines": [
        ""
      ]
    }
  ]
}

Gemengde regeleinden, losse spaties en lege velden zijn normaal in echte bestanden. Vergelijk dit met het nette voorbeeld hierboven om te zien wat de parser aankan.

Veelgestelde vragen

Hoe krijgt een LRC-regel in de JSON-uitvoer een eindtijd?

Uit de start van de volgende regel, dezelfde regel die een songtekstspeler gebruikt. De laatste regel heeft geen opvolger en krijgt de duur uit het veld op deze pagina.

Hoe ziet de JSON-uitvoer eruit als LRC daar naartoe gaat?

Als een object met version en een array cues. Elke cue bevat start en end in milliseconden en een array lines; een twee-regelige songtekstregel levert dus één cue met twee waarden in lines.

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

Als twee items in de lines-array van dezelfde cue. De twee songtekstregels blijven daarmee één ondertitelblok; ze worden niet over twee cues verdeeld.

Blijft de volgorde van LRC-blokken in JSON gelijk?

Ja, de cues worden op starttijd gesorteerd: vroegste eerst. Een bestand dat niet in volgorde stond, wordt hier rechtgezet; dat raakt de structuur, niet de tekst.

Kan ik JSON weer naar LRC omzetten?

Ja, met een eigen verlieslijst: JSON naar LRC verliest timing, opmaak, positionering, karaoke en precisie. Die lijst wijkt af van de lijst hierboven omdat de twee formaten verschillende dingen vasthouden.

Blijft de tekencodering van het LRC-bestand in JSON behouden?

Nee, de uitvoer is altijd UTF-8 met Unix-regeleinden en zonder byteordemarkering. Een bestand in UTF-16 of een Windows-codering wordt bij het inlezen gedecodeerd; de JSON-uitvoer zelf verandert daardoor niet.

Gerelateerde hulpmiddelen