Zum Hauptinhalt springen
SubtitleMatrix

ASS in SRT umwandeln

FormatkonvertierungAdvanced SubStation Alpha (ASS)
Oder Untertiteltext einfügen

Was diese Konvertierung ändert

4 Sachen entfallen oder brauchen eine Entscheidung

  • Formatierung

    die gesamte Formatierung (Fett, Kursiv, Farbe, Kontur, Schatten)

  • Positionierung

    die Positionierung auf dem Bildschirm (jeder Block kehrt an die Standardposition zurück)

  • Karaoke

    Karaoke-Zeitangaben (Hervorhebung pro Silbe)

  • 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 flacht ein Advanced-SubStation-Alpha-Skript zu reinem SRT ab. ASS behandelt einen Untertitel als Text, den eine Stil-Engine zeichnet; SRT als Textzeile zwischen zwei Zeitstempeln. Die Konvertierung behält die Zeitachse – aus ASS-Schreibweise `0:00:01.00` wird SRT-Schreibweise `00:00:01,000` – und die Wörter, und sie übersetzt, was SRT ausdrücken kann: Ein Kursivlauf wird ein `<i>`-Tag, ein Fettlauf ein `<b>`-Tag.

Was das Skript über das Zeichnen sagt, hat keinen Platz. Position, Schriftart, Kontur, Schatten und das silbenweise Timing von Karaoke sind Anweisungen an einen Renderer, den SRT nicht hat. Sie fallen weg, statt als falsches Markup in den Blocktext geschmuggelt zu werden, und jeder Punkt steht unter dem Dateifeld, bevor Sie konvertieren.

Eine ganze Staffel ist möglich: Dateien werden einzeln abgearbeitet, der Lauf lässt sich unterbrechen, und alles kommt als ein ZIP-Archiv. Die Konvertierung läuft im Browser, Ihr Skript wird nie hochgeladen.

Beispiele

Eine typische ASS-Datei, konvertiert nach SRT

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

1
00:00:01,000 --> 00:00:04,000
Hello there.

2
00:00:05,000 --> 00:00:08,500
<i>Italic</i> and <b>bold</b> text.

3
00:00:09,000 --> 00:00:12,000
Positioned

4
00:00:13,000 --> 00:00:16,000
<c>ka</c><c>ra</c><c>o</c><c>ke</c>

5
00:00:17,000 --> 00:00:20,000
Line one
Line two

6
00:00:21,000 --> 00:00:24,000
Top left

In dieser Ausgabe gehen verloren: Stile, Positionierung, Karaoke und formatspezifische Inhalte. Alles andere stimmt Zeile für Zeile überein.

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

1
00:00:01,000 --> 00:00:04,000
Hello, world

2
00:00:05,000 --> 00:00:08,000
{\fad(300,300)}Unmodelled override

3
00:00:09,000 --> 00:00:12,000
Both, wrong order

4
00:00:13,000 --> 00:00:16,500
One decimal centisecond

5
00:00:17,000 --> 00:00:20,000
Soft
break

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

Häufige Fragen

Wohin ist die Positionierung beim Weg von ASS nach SRT verschwunden?

SRT kann einen Block nirgends auf dem Bildschirm platzieren – der Player entscheidet. Eine Zeile mit `\pos(320,240)` wird daher ein gewöhnlicher Block, die Koordinaten können in der Ausgabe nicht erscheinen. Das ist einer der Punkte in der Liste oben.

Was passiert beim ASS-nach-SRT-Konvertieren mit dem Karaoke-Timing?

Silbenweises Karaoke ist eine Zeitangabe, kein Text, und SRT hat keine entsprechende Anweisung. Die Silben bleiben erhalten und markiert, aber die Dauern, die sie nacheinander aufleuchten ließen, sind weg: SRT zeigt den ganzen Block auf einmal.

Wie werden die Zeitstempel von ASS nach SRT umgerechnet?

ASS schreibt Stunden, Minuten, Sekunden und Hundertstel; SRT schreibt Stunden, Minuten, Sekunden und Millisekunden. Die Hundertstel werden mit zehn multipliziert, das Trennzeichen ändert sich – die Zeitachse bleibt auf die Hundertstelsekunde genau, so fein, wie die Quelle sie je gespeichert hat.

Was passiert mit den Stilen im ASS-Skript in der SRT-Ausgabe?

Sie werden gelesen, und was SRT ausdrücken kann, wird übernommen: Kursiv- und Fett-Einstellungen eines Stils werden zu `<i>`- und `<b>`-Tags. Alles andere – Schriftart, Größe, Farben, Kontur, Ränder – fällt weg, weil SRT keinen Platz dafür hat.

Was geht bei ASS nach SRT verloren?

Stile, Positionierung, Karaoke und formatspezifische Inhalte. Zeitachse, Text und Zeilenumbrüche bleiben; die Stiltabelle, `[Script Info]`, eingebettete Schriften und `Comment:`-Zeilen haben in SRT keinen Platz.

Spielt es für die SRT-Ausgabe eine Rolle, dass mein ASS-Skript mehrere Stile verwendet?

Nein. Jede `Dialogue:`-Zeile wird einzeln gelesen und ihr Stil für genau diese Zeile nachgeschlagen, ein Skript mit einem Dutzend Stilen konvertiert also genauso wie eines mit einem einzigen.

Verwandte Werkzeuge