Zum Hauptinhalt springen
SubtitleMatrix

JSON in SSA umwandeln

Oder Untertiteltext einfügen

Was diese Konvertierung ändert

1 Sache entfällt oder braucht eine Entscheidung

  • 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 SSA umwandeln: Datei hineinziehen oder Text einfügen, die SSA-Fassung herunterladen. Der Browser rechnet, der Rechner bleibt die einzige Station.

Die Formate speichern nicht dasselbe: SSA rechnet in Hundertsteln, JSON in Millisekunden – mehr Unterschied gibt es nicht. Die Liste oben ist deshalb kurz und gilt, bevor eine Datei geöffnet ist.

Die Warteschlange nimmt auch eine ganze Staffel und liefert alle Dateien in einem ZIP.

Beispiele

Eine typische JSON-Datei, nach SSA 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

[Script Info]
Title: Fixture: typical
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,,,,0,0,,,,,,,,,

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,{\pos(100,200)}Hello world.\NSecond line.
Dialogue: 0,0:00:02.50,0:00:04.00,Default,,0,0,0,,Plain line.\N{\i1}Styled{\i0} line.
Dialogue: 0,0:00:04.50,0:00:06.00,Default,,0,0,0,,Roger: I am here.

In dieser Ausgabe verloren: 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

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,First.
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,Second.
Dialogue: 0,0:00:02.00,0:00:03.00,Default,,0,0,0,,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

Warum verschieben sich die Zeitstempel von JSON nach SSA?

SSA schreibt 0:00:04.13, JSON schreibt 4126 – Hundertstel gegen Tausendstel. Jeder Zeitstempel wird auf die nächsten 10 ms gerundet; 4126 ms werden zu 4,13 s. Die Reihenfolge bleibt, keine cue bewegt sich mehr als 5 ms.

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

Jeder Untertitel ist eine Dialogue-Zeile im Abschnitt [Events]. Statt eines Layer-Feldes wie in ASS steht dort das Feld Marked, das SSA an dieser Stelle führt. Aus jeder JSON-cue wird eine SSA-cue, gleiche Reihenfolge, gleicher Text.

Wie kommt eine zweizeilige JSON-cue in SSA an?

Als zwei Zeilen mit \N dazwischen, dem harten Umbruch von SSA. Das lines-Array bleibt eine cue, der Player zeigt beide Zeilen gemeinsam.

Was bleibt von Stil, Position und Karaoke bei JSON nach SSA erhalten?

Stiltabelle, position und Karaoke werden übernommen, weil SSA sie ausdrücken kann. Verloren geht allein die Zeitauflösung: SSA rechnet in Hundertsteln, JSON in Millisekunden.

Bleibt die Reihenfolge der JSON-cues in SSA erhalten?

Ja, sie werden beim Schreiben nach start sortiert, früheste zuerst. Eine ungeordnete JSON-Datei kommt geordnet heraus; das ist eine strukturelle, keine inhaltliche Änderung.

Kann ich SSA zurück nach JSON wandeln?

Ja, und diese Richtung hat ihre eigene Verlustliste: SSA nach JSON verliert formatspezifische Inhalte wie den [Script Info]-Kopf und die SSA-eigenen Stilfelder. Die Liste oben gilt nur für den Weg nach SSA.

Verwandte Werkzeuge