Zum Hauptinhalt springen
SubtitleMatrix

JSON in SMI umwandeln

Oder Untertiteltext einfügen

Was diese Konvertierung ändert

2 Sachen entfallen oder brauchen eine Entscheidung

  • Formatierung

    die gesamte Formatierung außer Fett und Kursiv (Farbe, Kontur, Schatten, Ränder)

  • Karaoke

    Karaoke-Zeitangaben (Hervorhebung pro Silbe)

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 SMI umwandeln: Datei ablegen oder Text einfügen, die SAMI-Fassung herunterladen. Alles läuft lokal im Browser, ohne Upload.

Die Formate speichern nicht dasselbe: SMI kann Stil und Karaoke nicht festhalten, Position und Millisekunden dagegen schon. Die Liste oben folgt aus der Formatmatrix, nicht aus der einzelnen Datei.

Mehrere Dateien auf einmal sind vorgesehen: Die Warteschlange arbeitet sie nacheinander ab und liefert ein ZIP.

Beispiele

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

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>Hello world.<br>Second line.
<SYNC Start=2000>
<P>&nbsp;
<SYNC Start=2500>
<P>Plain line.<br><i>Styled</i> line.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=4500>
<P>Roger: I am here.
<SYNC Start=6000>
<P>&nbsp;
</BODY>
</SAMI>

In dieser Ausgabe verloren: Stil und Karaoke. 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

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>First.
<SYNC Start=1000>
<P>&nbsp;
<SYNC Start=1000>
<P>Second.
<SYNC Start=2000>
<P>&nbsp;
<SYNC Start=2000>
<P>Third.
<SYNC Start=3000>
<P>&nbsp;
</BODY>
</SAMI>

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

Welcher Stil überlebt von JSON nach SMI?

Die Betonung im Text: fett, kursiv, unterstrichen und eine Farbe werden als <b>, <i>, <u> und <font color="…"> geschrieben, und Browser befolgen sie. Nicht übernommen wird die JSON-Stiltabelle – Schriftart, Größe, Kontur, Schatten und Ränder; die einbettende Seite gestaltet per CSS.

Was passiert mit Karaoke-Timing von JSON nach SMI?

Die Marken fallen weg, weil SMI keinen Zeitpunkt innerhalb einer Zeile kennt. Die Silben bleiben als Text einer <P>-Zeile stehen.

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

Jede cue ist ein <SYNC Start=4126>-Block mit dem Text in einem <P> darunter. Direkt danach folgt ein <P>&nbsp;-Block, der den Bildschirm wieder leert, weil ein SYNC alles Vorherige ersetzt. Nummern und Zeitcode-Zeile gibt es nicht.

Sind die JSON-Zeiten in der SMI-Datei exakt?

Ja. JSON schreibt 4126, SMI schreibt Start=4126 – beide in Millisekunden. Es wird weder gerundet noch verschoben.

Warum steht bei JSON nach SMI nach jedem SYNC ein &nbsp;-Block?

Weil SAMI jeden Bildschirmzustand durch ein neues <SYNC> ersetzt: Ohne den leeren Block bliebe der vorige Untertitel stehen. Der Block ist eine Bildschirmlöschung, keine leere cue, und taucht beim erneuten Einlesen nicht als Untertitel auf.

Was passiert mit der Position von JSON nach SMI?

Sie bleibt erhalten: SMI kann Positionen ausdrücken, deshalb steht positioning nicht in der Verlustliste. Die cue behält ihren Ort, auch wenn die Stiltabelle selbst nicht mitkommt.

Verwandte Werkzeuge