JSON-Untertitelformat
Was dieses Format ausdrücken kann
- Textformatierung
- Schriften, Farbe, Kontur, Schatten
- Positionierung auf dem Bildschirm
- Ja
- Karaoke-Zeitangaben
- Ja
- Zeilenumbrüche innerhalb eines Blocks
- Ja
- Zeitachse
- Start- und Endzeit für jeden Block
- Zeitauflösung
- 1 ms
- Zeitangaben als Bildnummern gespeichert
- Nein
- Rechts-nach-links-Text
- Ja
Beispiele
Eine typische JSON-Datei und was daraus gelesen wird
Datei
{
"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"
}
]
}
Was sie enthält
3 cues, 5 lines of text
0 ms → 2000 ms
Hello world.
Second line.
[Default; position 100,200 (center)]
2500 ms → 4000 ms
Plain line.
Styled line. [italic ×1]
4500 ms → 6000 ms
Roger: I am here.
[speaker Roger]
Outside the cues:
styles Default
other keys version, title, fps, generator — carried through untouchedDie rechte Seite ist keine konvertierte Datei – sie zeigt, was diese Seite aus der linken liest und womit jede Konvertierung dieser Datei beginnt.
Eine widerspenstige JSON-Datei und was trotzdem gelesen wird
Datei
{
"cues": [
{ "start": "0:00:01,5", "end": "0:00:03,0", "text": "Unpadded timecode." },
{ "start": 4000.5, "end": 5000, "lines": ["Fractional start.", { "text": "Second.", "tags": [] }] },
{ "start": 9000, "end": 8000, "lines": ["End before start."] },
{ "start": "nope", "end": 12000, "lines": ["No readable start."] },
{ "start": 13000, "lines": ["No end at all."] }
],
"generator": "subtitlematrix boundary",
"styles": {},
"title": "Fixture: boundary"
}
Was sie enthält
3 cues, 4 lines of text
1500 ms → 3000 ms
Unpadded timecode.
4001 ms → 5000 ms
Fractional start.
Second.
9000 ms → 9001 ms
End before start.
Outside the cues:
other keys generator, title — carried through untouched
Reported while reading — repaired or skipped, never silently:
2 × entries with no readable start and end time (they are not cues, so they were skipped)
1 × cue times that were not whole milliseconds (they were rounded to the nearest millisecond)
1 × cues whose end time was not after their start time (they were given a 1ms duration)Echte Dateien kommen mit BOM, Windows-Zeilenenden, einer verirrten Zeile vor dem Zeitcode oder einem unlesbaren Zeitcode. Nichts davon wirft einen Fehler: Was nicht verstanden wird, wird gemeldet statt still verworfen.
SubtitleMatrix JSON in ein anderes Format konvertieren
Jede davon läuft vollständig in Ihrem Browser. Die Beschriftungen sagen, was diese Richtung kostet, bevor Sie sie öffnen.
- Formatierung
- Positionierung
- Karaoke
- Zeitangaben
- Formatierung
- Positionierung
- Karaoke
- Genauigkeit
- Formatierung
- Positionierung
- Karaoke
- Bildrate
- Formatierung
- Positionierung
- Karaoke
- Formatierung
- Karaoke
- Formatierung
- Positionierung
- Karaoke
- Zeitangaben
- Formatierung
- Positionierung
- Karaoke
- Zeilenumbrüche
- Formatierung
- Positionierung
- Karaoke
In dieses Format konvertieren
- SubRip (SRT) → SubtitleMatrix JSON
- WebVTT (VTT) → SubtitleMatrix JSON
- Advanced SubStation Alpha (ASS) → SubtitleMatrix JSON
- SubStation Alpha (SSA) → SubtitleMatrix JSON
- YouTube SBV → SubtitleMatrix JSON
- SAMI (SMI) → SubtitleMatrix JSON
- LRC Lyrics → SubtitleMatrix JSON
- MicroDVD → SubtitleMatrix JSON
- TTML (Timed Text) → SubtitleMatrix JSON
- Plain Text (TXT) → SubtitleMatrix JSON
- CSV Spreadsheet → SubtitleMatrix JSON
JSON ist das Eigenformat dieser Seite: ein version-Feld, eine optionale Stiltabelle und ein cues-Array, dessen Zeiten in ganzen Millisekunden stehen. Diese Seite ist die Referenz dazu – was das Format aufnimmt, was nicht, und eine Seite für jedes Zielformat.
Die Tabelle oben ist vollständig; eine versteckte Funktionsliste gibt es nicht. Steht in einer Zeile nein, ist genau das der Verlust beim Konvertieren nach JSON, und jede verlinkte Seite sagt es, bevor eine Datei geöffnet wird.
Alle diese Konvertierungen laufen im Browser. Nichts wird hochgeladen, keine Anmeldung ist nötig – wichtig für Material unter NDA, aus einer Patientenakte oder mit Sendesperrfrist.
Häufige Fragen
Was ist eine JSON-Datei in diesem Werkzeug?
Das .json dieser Seite ist ein eigenes Untertitel-Schema: ein version-Feld, eine optionale Stiltabelle und ein cues-Array, dessen Zeiten ganze Millisekunden sind. Es ist bewusst verlustfrei gegenüber allem, was die anderen Formate ausdrücken können, und für Skripte und Pipelines gedacht, nicht für Player.
Speichert JSON Gestaltung, Position und Karaoke?
Ja, mehr als die anderen: eine Stiltabelle mit Schrift, Größe, Farben, Kontur und Rändern, pro cue eine position mit x, y und align sowie tags je Zeile für fett, kursiv, Farbe und Karaoke. Weil die Auszeichnung in tags-Arrays steht und nicht als Code im Text, muss beim Schreiben und Lesen nichts maskiert werden.
Wie genau sind die Zeiten im JSON-Format?
Jede cue hat start und end als ganze Millisekunden, etwa 4126. Der Wert ist exakt, die cues sind nach start sortiert, und start liegt immer vor end. Eine cue darf kurz, lang oder überlappend sein, ohne dass das Format etwas hineininterpretiert.
Welche Ziele sind von JSON aus verlustfrei?
Keines. ASS und SSA verlieren nur die Zeitauflösung, weil sie in Hundertsteln rechnen; SRT, VTT, SBV und CSV verlieren Stil, Position oder Karaoke; SMI verliert Stil und Karaoke; LRC zusätzlich die Endzeiten; TXT die gesamte Zeitachse. Jede Zielseite nennt ihre eigene Liste.
Kann ich eine JSON-Datei im Texteditor bearbeiten?
Ja, solange Kommas und Anführungszeichen stimmen. Die Ausgabe dieser Seite ist auf zwei Leerzeichen eingerückt, hält eine feste Schlüsselreihenfolge ein und schreibt Zeiten als Zahlen: Eine cue bei 1,25 Sekunden hat "start": 1250.