ASS naar SSA
Of plak ondertiteltekst
Wat deze conversie verandert
In deze richting gaat niets verloren — elk kenmerk van het bronformaat heeft in het doelformaat een plek.
Deze lijst komt uit de capaciteitenmatrix voor deze twee formaten, niet uit het bestand dat je hebt geladen. Een specifiek bestand kan meer verliezen wanneer het kenmerken gebruikt die het formaat toestaat maar de matrix niet modelleert.
ASS en SSA zijn twee dialecten van dezelfde scripttaal. De nieuwere, Advanced SubStation Alpha, noemt zich ScriptType v4.00+ en bewaart zijn stijlen in een V4+-sectie; de originele noemt zich v4.00 en bewaart ze in een V4-sectie. De Dialogue-regels, de overridecodes en de tijdnotatie zijn gelijk, dus deze omzetting is grotendeels een herschrijving van de kop in plaats van een vertaling van de ondertitels.
Het werk zit in de stijltabel, omdat de kolommen tussen de dialecten verschillen. De kleurkolommen zijn waar dat zichtbaar wordt: V4+ heeft een aparte OutlineColour en BackColour, V4 noemt ze TertiaryColour en BackColour en voegt een AlphaLevel toe. De omzetter leest je bestand volgens de kolomlijst die het zelf aangeeft en schrijft daarna de lijst die het doeldialect verwacht, waarbij elke waarde naar de bijpassende kolom gaat. De sectiekop en de opgegeven scripttype worden ook bijgewerkt — een bestand dat v4.00+ claimt terwijl het V4-kolommen gebruikt, wordt door de meeste renderers geweigerd.
Aan je tijden verandert niets, en de woorden blijven staan; wat het doeldialect niet kent, valt weg — in de voorbeelden hieronder zie je precies welke cellen en codes dat zijn. De omzetting draait volledig in je browser.
Voorbeelden
Een typisch ASS-bestand, omgezet naar SSA
Invoer
[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
Uitvoer
[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
De tijdstempels blijven gelijk en de stijltabel wordt herschreven. Wat SSA niet kan dragen — de randkleurwaarde en een hoekcode als an7 — valt weg; vergelijk beide kanten regel voor regel.
Dezelfde omzetting op een rommelige invoer
Invoer
[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 timecodeUitvoer
[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
Zo zien echte bestanden eruit — gemengde regeleinden, losse spaties, lege velden. Vergelijk met het nette voorbeeld hierboven om te zien wat de parser vergeeft.
Veelgestelde vragen
Wat verschilt er werkelijk tussen ASS en SSA?
De kolomlijst van de stijltabel, de ScriptType-regel en de kop van de stijlsectie. Dialogue-regels en tijdstempels zijn gelijk, dus de cues blijven staan; van de overridecodes gaan alleen de codes mee die het doeldialect kent — een hoekcode als an7 valt weg.
Blijft mijn randkleur bewaard van ASS naar SSA?
Nee. De kolom heet in SSA TertiaryColour in plaats van OutlineColour, maar in de uitvoer blijft die cel leeg: de waarde wordt niet overgezet. Reken er dus niet op dat je randkleur behouden blijft, ook al gaat de rest van de stijltabel mee.
Speelt de SSA-uitvoer nog in een oudere speler?
Dat is meestal de reden om deze kant op te converteren. De uitvoer noemt zich het oudere scripttype en gebruikt de oudere stijlsectie, precies wat die renderers verwachten. Een nieuwer bestand in een oudere speler toont doorgaans de dialoog wel maar negeert alle styling.
Worden de tijden bij ASS naar SSA aangeraakt?
Nee. Beide dialecten schrijven tijd als uren, minuten, seconden en honderdsten, dus elke tijdstempel wordt ongewijzigd overgenomen en de ondertitels blijven bij dezelfde video in sync.
Wat als mijn ASS-bestand kolommen uit het andere dialect gebruikt?
Het wordt gelezen volgens de kolomlijst die in het bestand zelf staat, niet op positie. Welke volgorde de kolommen ook hebben, de waarden worden aan de juiste rollen gekoppeld, en de uitvoer wordt geschreven in de volgorde die het doeldialect voorschrijft.