Zum Hauptinhalt springen
SubtitleMatrix

JSON in LRC umwandeln

Oder Untertiteltext einfügen

Was diese Konvertierung ändert

5 Sachen entfallen oder brauchen eine Entscheidung

  • Zeitangaben

    die Endzeiten der Untertitelblöcke (das Ausgabeformat zeichnet nur auf, wann ein Block beginnt)

  • Formatierung

    die gesamte Formatierung (Fett, Kursiv, Farbe, Kontur, Schatten)

  • Positionierung

    die Positionierung auf dem Bildschirm (jeder Block kehrt an die Standardposition zurück)

  • Karaoke

    Karaoke-Zeitangaben (Hervorhebung pro Silbe)

  • Genauigkeit

    Zeitgenauigkeit — die Uhr der Ausgabe ist gröber, jeder Zeitstempel wird also auf die nächsten 10 ms gerundet

Diese Liste stammt aus der Fähigkeitsmatrix für diese beiden Formate, nicht aus der konkreten Datei, die Sie geladen haben. Eine bestimmte Datei kann mehr verlieren, wenn sie Merkmale nutzt, die das Format erlaubt, die Matrix aber nicht modelliert.

JSON in LRC umwandeln: Datei hineinziehen oder Text einfügen, die LRC-Fassung mitnehmen. Der Browser erledigt die Arbeit; hochgeladen wird nichts.

Die Formate speichern nicht dasselbe: LRC kennt nur Startmarken, also gehen Endzeiten, Stil, Position, Karaoke und die Millisekunden verloren. Die Liste oben ist eine Eigenschaft der Formate, nicht Ihrer Datei.

Auch eine ganze Sammlung ist kein Problem: Die Warteschlange verarbeitet sie seriell und packt alles in ein ZIP.

Beispiele

Eine typische JSON-Datei, nach LRC konvertiert

Eingabe

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

Ausgabe

[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 dieser Ausgabe verloren: Endzeiten, Stil, Position, Karaoke und Zeitauflösung. Alles andere stimmt Zeile für Zeile.

Dieselbe Konvertierung mit widerspenstiger Eingabe

Eingabe

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

Ausgabe

[00:00.00]First.
[00:01.00]Second.
[00:02.00]Third.

Solche Schäden haben echte Dateien – gemischte Zeilenenden, verirrte Leerzeichen, leere Felder. Vergleichen Sie mit dem sauberen Beispiel oben, um zu sehen, was der Parser verzeiht.

Häufige Fragen

Was passiert mit der Endzeit jeder JSON-cue in LRC?

Sie fällt weg. LRC notiert nur, wann eine Zeile beginnt; ein Liedtext-Player lässt sie stehen, bis die nächste einsetzt. Ein end-Feld wäre also ohne Wirkung. Der start-Wert aus JSON bleibt unverändert.

Warum verschieben sich die Zeitstempel von JSON nach LRC?

LRC schreibt [00:04.12] und damit Hundertstel, JSON schreibt 4126 für ganze Millisekunden. Beim Übertragen wird auf die nächsten 10 ms gerundet; aus 4126 ms werden 4,13 s. Die Reihenfolge bleibt, keine cue wandert weiter als 5 ms.

Was passiert mit Fett, Kursiv und Farbe von JSON nach LRC?

LRC speichert überhaupt keine Gestaltung. Weder die tags einer Zeile noch ein Eintrag im styles-Objekt der JSON-Datei finden einen Platz; jede Zeile wird als reiner Text geschrieben. Die Wörter selbst bleiben unberührt.

Wie sieht die LRC-Ausgabe aus, wenn JSON zu LRC wird?

Jede Zeile trägt ihre eigene Zeitmarke in eckigen Klammern, Nummern gibt es nicht. Eine zweizeilige JSON-cue wird zu zwei Zeilen mit derselben Marke – so sagt LRC, dass beide zusammengehören. Text und Reihenfolge bleiben.

Kann ich LRC zurück nach JSON wandeln?

Ja, aber das ist eine eigene Richtung mit eigener Verlustliste: LRC hat keine Endzeiten, also fehlt beim Rückweg timing. Die Liste unterscheidet sich von der hier gezeigten, weil beide Formate verschiedene Dinge behalten.

Was passiert mit der Position von JSON nach LRC?

Die position aus JSON wird nicht übernommen, weil LRC keine Aussage über den Bildschirmort kennt. Jede Zeile erscheint dort, wo der Player sie platziert – bei den meisten unten mittig.

Verwandte Werkzeuge