Zum Hauptinhalt springen
SubtitleMatrix

ASS in SSA umwandeln

FormatkonvertierungAdvanced SubStation Alpha (ASS)
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.

ASS und SSA sind zwei Dialekte derselben Skriptsprache. Der neuere, Advanced SubStation Alpha, deklariert sich als `ScriptType v4.00+` und hält seine Stile in einem V4+-Abschnitt; der ältere deklariert `v4.00` und nutzt einen V4-Abschnitt. Dialogue-Zeilen, Override-Codes und Zeitnotation sind gemeinsam, diese Konvertierung ist also ein Umschreiben des Kopfes und keine Übersetzung der Untertitel.

Die Arbeit steckt in der Stiltabelle, weil die Spalten sich unterscheiden. Am deutlichsten bei den Farben: V4+ hat getrennte Spalten für Kontur und Schatten, V4 nennt sie Tertiary und Back. Der Konverter liest Ihre Datei über die deklarierte Spaltenliste und schreibt die Liste, die der Ziel-Dialekt erwartet, wobei jeder Wert an die passende Spalte wandert. Abschnittsüberschrift und deklarierter Skripttyp werden ebenfalls aktualisiert – eine Datei, die v4.00+ behauptet und V4-Spalten nutzt, wird von den meisten Renderern abgelehnt.

An Ihren Zeiten und Ihrem Text ändert sich nichts, und die Konvertierung läuft vollständig im Browser.

Beispiele

Eine typische ASS-Datei, konvertiert nach SSA

Eingabe

[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0

[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
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,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:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left

Ausgabe

[Script Info]
Title: Example
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,0,0,1,2,2,2,10,10,10,,1
Style: Title,Arial,36,&H0000FFFF,&H000000FF,,&H00000000,-1,0,1,2,2,2,10,10,10,,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 0,0:00:21.00,0:00:24.00,Default,,0,0,0,,Top left

Hier geht nichts verloren: Vergleichen Sie beide Seiten Zeile für Zeile.

Dieselbe Konvertierung mit ungewöhnlicher Eingabe

Eingabe

[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
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,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecode

Ausgabe

[Script Info]
Title: Dirty sample
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,-1,0,1,2,2,2,10,10,10,,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.50,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\Nbreak

So sehen echte Skripte aus – gemischte Zeilenenden, Override-Codes, eingebettete Schriften. Vergleichen Sie mit dem sauberen Beispiel oben.

Häufige Fragen

Was unterscheidet ASS und SSA eigentlich?

Die Spaltenliste der Stiltabelle, die Zeile `ScriptType` und die Überschrift des Stilabschnitts. `Dialogue:`-Zeilen, Override-Codes und Zeitstempel-Syntax sind gemeinsam – deshalb lässt sich ein Skript zwischen den Dialekten wandeln, ohne einen Block anzufassen.

Überlebt meine Konturfarbe den Weg von ASS nach SSA?

Ja. Die V4+-Spalte `OutlineColour` und die SSA-Spalte `TertiaryColour` halten dieselbe Art Wert an derselben Stelle; nur der Name in der Kopfzeile ändert sich. Der Konverter bildet die eine auf die andere ab, statt eine zu verwerfen.

Läuft die SSA-Ausgabe noch in einem älteren Player?

Genau deshalb konvertiert man in diese Richtung. Die Ausgabe deklariert den älteren Skripttyp und nutzt den älteren Stilabschnitt, den diese Renderer erwarten. Eine neuere Datei in einem älteren Player zeigt meist den Dialog, ignoriert aber die Stile.

Werden die Zeitangaben bei ASS nach SSA angefasst?

Nein. Beide Dialekte schreiben Zeit als Stunden, Minuten, Sekunden und Hundertstel, jeder Zeitstempel wird unverändert übernommen, die Untertitel bleiben also zum selben Video synchron.

Verliert ASS nach SSA etwas?

Nein. Jede Eigenschaft von ASS hat im SSA-Dialekt eine Entsprechung, einschließlich Stiltabelle, `[Script Info]`, Karaoke und Positionierung. Die Ausgabe ist dieselbe Bildsprache in der älteren Schreibweise.

Was, wenn mein ASS-Skript Spalten des SSA-Dialekts verwendet?

Gelesen wird über die in der Datei deklarierte Spaltenliste, nicht über die Position. Welche Reihenfolge die Spalten haben, die Werte werden den richtigen Rollen zugeordnet und in der Reihenfolge ausgeschrieben, die der Ziel-Dialekt vorgibt.

Verwandte Werkzeuge