SRT in JSON umwandeln
Oder Untertiteltext einfügen
Was diese Konvertierung ändert
In diese Richtung geht nichts verloren — jedes Merkmal des Quellformats hat im Zielformat einen Platz.
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.
Diese Seite verwandelt eine Untertiteldatei in strukturierte Daten: ein JSON-Dokument, das jeden Block mit Start- und Endzeit und seinem Text auflistet. Das Schema ist das eigene dieser Seite und bewusst klein – eine Versionsnummer und ein `cues`-Array, Zeiten als ganze Millisekunden statt als Zeitstempel. Nichts hängt an einer bestimmten Bibliothek, und nichts muss erraten werden.
Millisekunden werden verwendet, weil sie ohne Parsen nutzbar sind. Feiner als eine Millisekunde speichert keines der Formate hier, und eine ganze Zahl kann nicht wegen Komma- oder Punktkonvention falsch gelesen werden. Eine Zeile ohne Formatierung ist eine Zeichenkette; eine Zeile mit Kursiv, Fett oder Farbe wird ein Objekt aus Text und den zutreffenden Tags, jeweils mit Art und Zeichenbereich.
Das Ergebnis ist eine Datei für Skripte, Diffs oder die Versionsverwaltung, und der Rückweg liefert die Untertitel wieder. Wie bei jedem Werkzeug hier läuft die Arbeit im Browser.
Beispiele
Eine typische SRT-Datei, konvertiert nach JSON
Eingabe
1
00:00:01,000 --> 00:00:03,500
Hello there.
2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.
3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.
Ausgabe
{
"version": 1,
"cues": [
{
"id": "1",
"start": 1000,
"end": 3500,
"lines": [
"Hello there."
]
},
{
"id": "2",
"start": 3500,
"end": 6000,
"lines": [
{
"text": "Whispering now.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 10
}
]
},
"And a second line."
]
},
{
"id": "3",
"start": 6000,
"end": 9250,
"lines": [
{
"text": "Bold statement.",
"tags": [
{
"kind": "bold",
"start": 0,
"end": 4
}
]
}
]
}
]
}
Hier geht nichts verloren: Vergleichen Sie beide Seiten Zeile für Zeile.
Dieselbe Konvertierung mit ungewöhnlicher Eingabe
Eingabe
1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.
2
00:00:03,500 --> 00:00:06,000
3
00:00:08,000 --> 00:00:09,000
Last one.
Ausgabe
{
"version": 1,
"cues": [
{
"id": "1",
"start": 1000,
"end": 3500,
"lines": [
{
"text": "Bold and italic.",
"tags": [
{
"kind": "bold",
"start": 0,
"end": 4
},
{
"kind": "italic",
"start": 9,
"end": 15
}
]
}
]
},
{
"id": "2",
"start": 3500,
"end": 6000,
"lines": []
},
{
"id": "3",
"start": 8000,
"end": 9000,
"lines": [
"Last one."
]
}
]
}
So sehen echte Dateien aus – gemischte Zeilenenden, verirrte Leerzeichen, leere Felder. Vergleichen Sie mit dem sauberen Beispiel oben.
Häufige Fragen
Welchem Schema folgt die JSON-Ausgabe aus einer SRT-Datei?
Dem eigenen Schema dieser Seite: eine Versionsnummer, dann ein Array von Blöcken. Jeder Block hat eine `id`, `start` und `end` in Millisekunden und eine Liste von Zeilen; Metadaten gibt es keine, und das Format hängt von keiner Fremdbibliothek ab.
Warum verwendet die JSON-Ausgabe aus SRT Millisekunden statt Zeitstempel?
Damit die Datei ohne vorheriges Parsen nutzbar ist. Zwei Zeiten addieren, vergleichen oder sortieren sind gewöhnliche Zahlenoperationen auf ganzen Zahlen; eine Zeichenkette wie `00:00:01,000` muss erst dekodiert werden – und kann falsch dekodiert werden.
Wie wird SRT-Formatierung in der JSON-Ausgabe dargestellt?
Eine unformatierte Zeile bleibt eine Zeichenkette. Eine Zeile mit Formatierung wird ein Objekt aus Text und `tags`-Array; jeder Tag nennt Art sowie Start- und Endposition innerhalb des Textes. Beim Rückweg wird die Formatierung wieder ausgeschrieben.
Verliert SRT nach JSON etwas?
Nein. Jede Eigenschaft von SRT hat in diesem Schema eine Entsprechung, einschließlich Kursiv, Fett und Zeilenumbrüchen. Die Ausgabe ist dieselbe Zeitachse und derselbe Text in einer maschinenlesbaren Form.
Kann ich die aus SRT erzeugte JSON-Datei von Hand bearbeiten?
Ja, und der Rückweg ist die Prüfung. Wenn die Datei sich parsen lässt, reproduziert die Konvertierung die Blöcke mit den Zeiten, die Sie eingetragen haben – ein schneller Weg, einen Tippfehler zu finden.
Eignet sich die SRT-nach-JSON-Ausgabe für ein Skript?
Genau dafür ist sie gedacht. Lesen Sie das `cues`-Array, nehmen Sie `start` und `end` als Zahlen und fügen Sie die Zeilen zusammen – eine Zeile ist entweder eine Zeichenkette oder ein Objekt, dessen Feld `text` die Wörter enthält.