ASS naar SRT
Of plak ondertiteltekst
Wat deze conversie verandert
4 dingen vervallen of vragen om een beslissing
- Opmaak
alle opmaak (vet, cursief, kleur, contour, schaduw)
- Positionering
positionering op het scherm (elk blok keert terug naar de standaardpositie)
- Karaoke
karaoke-timing (markering per lettergreep)
- Formaatspecifieke inhoud
inhoud die het bronformaat buiten zijn blokken bewaart (blokken die geen ondertitel zijn, koptekst, instellingen per blok, uitgecommentarieerde gebeurtenissen) — het doelformaat heeft er geen plek voor
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.
Deze pagina plat een Advanced SubStation Alpha-script tot gewone SRT. ASS beschouwt een ondertitel als tekst die door een stijlengine wordt getekend; SRT beschouwt hem als een regel tekst tussen twee tijdstempels. De omzetting houdt de tijdlijn — herschreven van ASS-notatie 0:00:01.00 naar SRT-notatie 00:00:01,000 — en de woorden, en vertaalt de opmaak die SRT wél kan uitdrukken: een cursief stuk in het script wordt een cursieve tag, een vet stuk een vette.
Wat het script over tekenen zegt, heeft nergens heen te gaan. Een positie op het scherm, een lettertype, een rand, een schaduw en de timing per lettergreep van karaoke zijn allemaal instructies aan de renderer, en SRT heeft geen renderer om aan te sturen. Ze worden weggelaten in plaats van als nep-opmaak in de tekst gesmokkeld, en elk ervan staat in het verliesoverzicht onder het bestandsvak — dus je ziet de prijs voordat je een bestand inzet.
Een heel seizoen is prima: de bestanden worden één voor één verwerkt, je kunt halverwege stoppen, en alles komt samen als één ZIP. De omzetting gebeurt in je browser, dus je script wordt nooit geüpload.
Voorbeelden
Een typisch ASS-bestand, omgezet naar SRT
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
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 deze uitvoer verloren: styling, positionering, karaoke en formaateigen inhoud. Al het andere komt regel voor regel overeen.
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
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
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
Waar is de positionering gebleven bij ASS naar SRT?
SRT kan een cue nergens op het scherm plaatsen — de speler beslist waar ondertitels verschijnen. Een regel met een expliciete positie komt er dus als gewone cue uit, en de coördinaten kunnen niet in de uitvoer staan. Dat is een van de punten in de lijst hierboven.
Wat is er met mijn karaoketiming gebeurd in SRT?
Karaoke per lettergreep is een timinginstructie, geen tekst, en SRT heeft geen overeenkomstige instructie. De lettergrepen zelf blijven bewaard en zijn gemarkeerd zodat je ze terugvindt, maar de duur waardoor ze één voor één oplichtten is weg: SRT toont de hele cue in één keer.
Hoe worden de tijdstempels van ASS naar SRT omgezet?
ASS schrijft uren, minuten, seconden en honderdsten; SRT schrijft uren, minuten, seconden en milliseconden. De honderdsten worden met tien vermenigvuldigd en het scheidingsteken verandert, dus de tijdlijn blijft behouden tot op de honderdste seconde — zo precies als de bron ooit heeft opgeslagen.
Wat gebeurt er met de stijlen in het script bij SRT?
Ze worden gelezen, en wat SRT kan uitdrukken gaat mee: de cursief- en vetinstellingen die de stijl van een cue aanzet, worden tags in de uitvoer. Al het andere dat een stijl draagt — lettertype, grootte, kleuren, rand, marges — valt weg, omdat SRT er geen plek voor heeft.
Maakt het uit dat mijn ASS-script meerdere stijlen gebruikt?
Nee. Elke Dialogue-regel wordt op zichzelf gelezen en de stijl waarnaar hij verwijst wordt voor die regel opgezocht, dus een script met twaalf stijlen converteert precies zoals een script met één stijl. Wat overblijft zijn de vet- en cursiefvlaggen die per cue verschillen.