Zum Hauptinhalt springen
SubtitleMatrix

SMI in ASS umwandeln

Oder Untertiteltext einfügen

Was diese Konvertierung ändert

2 Sachen entfallen oder brauchen eine Entscheidung

  • Genauigkeit

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

  • Formatspezifischer Inhalt

    Inhalt, den das Quellformat außerhalb seiner Blöcke führt (Nicht-Block-Abschnitte, Kopftext, Einstellungen pro Block, auskommentierte Ereignisse) — das Zielformat hat keinen Platz dafür

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 konvertiert SMI nach ASS. Datei hineinziehen oder Text einfügen — zurück kommt die ASS-Fassung. Die Konvertierung läuft vollständig im Browser, ohne Upload und ohne Konto.

Text, Zeiten und Zeilenumbrüche kommen vollständig an. Verloren gehen Präzision — ASS speichert Hundertstelsekunden, SMI Millisekunden — und SAMI-eigene Konstruktionen wie der `<STYLE>`-Block, der `<TITLE>` und die `Class=`-Verweise, für die es in ASS kein Gegenstück gibt. Betonung, die direkt im Text eines Blocks steht, bleibt als Auszeichnung erhalten.

Eine Datei ist kein Problem, eine ganze Staffel auch nicht: Die Warteschlange arbeitet sie der Reihe nach ab, und die Ergebnisse kommen gemeinsam als eine ZIP-Datei.

Beispiele

Eine typische SMI-Datei, nach ASS konvertiert

Eingabe

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Ausgabe

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,How are you?\NFine, thanks.

Verloren in dieser Ausgabe: Präzision und SAMI-eigene Konstruktionen. Alles Übrige stimmt Zeile für Zeile.

Dieselbe Konvertierung mit einer unordentlichen Eingabe

Eingabe

<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom &amp; Jerry
<SYNC Start=12000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Ausgabe

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:02.50,0:00:09.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Tom &amp; Jerry

So sehen echte Schäden aus — gemischte Zeilenenden, verirrte Leerzeichen, leere Felder. Im Vergleich zum sauberen Beispiel oben wird sichtbar, was der Parser verzeiht.

Häufige Fragen

Warum haben sich bei SMI nach ASS die Zeitstempel verschoben?

ASS speichert Zeit als `0:00:04.13`, SMI als `Start=4126` — Hundertstel gegen Tausendstel —, also wird jeder Zeitcode auf die nächsten 10 ms gerundet: aus 4126 Millisekunden werden 4,13 Sekunden. Nichts wird gestreckt oder umsortiert, und kein Block bewegt sich um mehr als 5 ms; beim Abgleich gegen eine andere Datei ist das die eine ungenaue Stelle.

Was passiert bei SMI nach ASS mit dem `<STYLE>`-Block?

Er fällt weg, ebenso der `<TITLE>` und die `Class=`-Verweise: SAMI beschreibt das Aussehen seiner Untertitel außerhalb des Blocktextes, und ASS speichert Blöcke statt eines Dokuments. Betonung, die im Text eines Blocks selbst steht, ist davon nicht betroffen — sie kommt als Auszeichnung an.

Wie kommt ein SMI-Block in der ASS-Ausgabe an?

Als eine `Dialogue:`-Zeile im Abschnitt `[Events]`, mit einem Layer-Feld dort, wo SRT die Nummer führt. Jeder SMI-Block wird ein ASS-Block, in derselben Reihenfolge; das abschließende `<P>&nbsp;` verschwindet, weil ASS ein Ende kennt.

Behalten SMI-Blöcke in der ASS-Ausgabe ihre Reihenfolge?

Ja, und sie werden unterwegs nach Startzeit sortiert — der früheste zuerst. War die SMI-Datei ungeordnet, stellt ASS die Reihenfolge wieder her; das ändert die Struktur, nicht den Inhalt.

Lässt sich ASS wieder nach SMI konvertieren?

Ja, und diese Richtung hat ihre eigene Liste: ASS nach SMI verliert Stile, Karaoke und formatspezifische Konstruktionen. Die Liste unterscheidet sich von der obigen, weil die beiden Formate unterschiedliche Dinge behalten.

Behält die ASS-Ausgabe die Zeichenkodierung der SMI-Datei?

Nein — die Ausgabe ist UTF-8 mit Unix-Zeilenenden und ohne Byte-Order-Mark, unabhängig davon, was die SMI-Datei verwendet hat. Eine UTF-16- oder Windows-Einzelbyte-Datei wird beim Einlesen dekodiert; was herauskommt, ist immer dieselbe UTF-8-ASS-Datei.

Verwandte Werkzeuge