Naar de hoofdinhoud
SubtitleMatrix

ASS naar SMI

FormaatconversieAdvanced SubStation Alpha (ASS)
Of plak ondertiteltekst

Wat deze conversie verandert

3 dingen vervallen of vragen om een beslissing

  • Opmaak

    alle opmaak behalve vet en cursief (kleur, contour, schaduw, marges)

  • 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 zet een ASS-script om naar SAMI (SMI), het formaat dat Windows Media Player gebruikte. De vorm verschilt nogal: geen cue-nummers en geen tijdstempelregel, maar een reeks SYNC-tags met de tekst in een P-element eronder. Omdat een SYNC vervangt wat op het scherm stond, schrijft de omzetter na elke cue ook een leeg P-blok dat het scherm weer vrijmaakt, en bovenin komt een STYLE-blok met de basisregel voor P.

Tijden en woorden komen heel over, en opmaak die bij een stuk tekst hoort ook: cursief en vet worden tags, en karaokelettergrepen blijven als gemarkeerde stukjes tekst staan. Wat niet meekan, is het script als geheel: de stijltabel met lettertype, grootte, kleur, rand en marges, het Script Info-blok, de Comment-regels en de ingebedde lettertypen en afbeeldingen. Positie- en karaoketiming verdwijnen eveneens.

De SMI-uitvoer heeft wel een eigen STYLE-blok, maar dat is een vaste CSS-regel van de omzetter, geen overname van het jouwe. Het verliesoverzicht noemt de punten, en de omzetting draait in je browser.

Voorbeelden

Een typisch ASS-bestand, omgezet naar SMI

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

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P><i>Italic</i> and <b>bold</b> text.
<SYNC Start=8500>
<P>&nbsp;
<SYNC Start=9000>
<P>Positioned
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=13000>
<P><c>ka</c><c>ra</c><c>o</c><c>ke</c>
<SYNC Start=16000>
<P>&nbsp;
<SYNC Start=17000>
<P>Line one<br>Line two
<SYNC Start=20000>
<P>&nbsp;
<SYNC Start=21000>
<P>Top left
<SYNC Start=24000>
<P>&nbsp;
</BODY>
</SAMI>

In deze uitvoer verloren: styling, 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 timecode

Uitvoer

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello, world
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P>{\fad(300,300)}Unmodelled override
<SYNC Start=8000>
<P>&nbsp;
<SYNC Start=9000>
<P>Both, wrong order
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=13000>
<P>One decimal centisecond
<SYNC Start=16500>
<P>&nbsp;
<SYNC Start=17000>
<P>Soft<br>break
<SYNC Start=20000>
<P>&nbsp;
</BODY>
</SAMI>

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

Welke styling overleeft van ASS naar SMI?

Nadruk die in de tekst wordt geschreven: vet, cursief en onderstreept komen als tags in de P-tekst, en een browser of speler doet daar iets mee. Wat het SMI-bestand niet draagt, is de stijltabel waarop ASS leunt — lettertype, grootte, rand, schaduw en marges gaan allemaal weg, en de pagina die de ondertitels toont, stylet ze met zijn eigen CSS.

Wat gebeurt er met de positie op het scherm van ASS naar SMI?

Die verdwijnt. SMI plaatst een ondertitel niet vrij op het scherm; de SYNC-structuur bepaalt wanneer iets verschijnt, niet waar. Positie- en hoekcodes uit het ASS-script worden bij de omzetting weggelaten en de tekst komt op de standaardplaats van de speler terecht.

Wat gebeurt er met karaoketiming van ASS naar SMI?

De timing gaat weg, de woorden blijven. Karaoke zit in de codes die een ASS-event draagt en die markeren wanneer elke lettergreep oplicht; SMI kan geen moment binnen een regel vastleggen, dus de markeringen verdwijnen en de lettergrepen komen als gewone SMI-tekst aan, wel als stukjes gemarkeerd.

Wat gebeurt er met het Script Info-blok en de rest van het script in SMI?

Alleen de Dialogue-regels worden ondertitels. Het Script Info-blok (de titel inbegrepen — SMI heeft er geen plek voor), de stijltabel, eventuele Comment-regels en alles wat in Fonts of Graphics is ingebed, vallen weg. Voor een script waarvan de styling met de hand is geschreven, is dat het verlies dat het meest opvalt.

Hoe ziet de SMI-uitvoer eruit als ASS wordt omgezet?

Als SAMI: een HEAD met een STYLE-blok, dan een BODY met per cue een SYNC-tag en een P-element met de tekst, en direct daarna een leeg P-blok dat het scherm vrijmaakt. Er zijn geen cue-nummers en geen tijdstempelregels zoals in ASS.

Zijn de ASS-tijden exact in het SMI-bestand?

Ja, tot op de milliseconde — fijner gaat geen van beide formaten. ASS schrijft een moment als 0:00:04.13 en SMI schrijft hetzelfde moment als Start=4130; niets wordt afgerond of verschoven, en een cue die 2,9 seconden in beeld was, blijft dat.

Hoe komt een ASS-blok van twee regels in SMI terecht?

Als twee regels met een br-element ertussen, de manier waarop SAMI een harde regeleinde schrijft. Het paar blijft bij elkaar: de twee ASS-regels horen in de SMI-uitvoer nog steeds bij één ondertitel, en een speler toont ze samen.

Blijft de volgorde van ASS-blokken bewaard in SMI?

Ja, en ze worden onderweg op begintijd gesorteerd — vroegste eerst, zoals een speler ze leest. Stond je ASS-bestand niet in tijdsorde, dan zet de SMI-uitvoer de blokken terug in de juiste; dat is een structurele wijziging, geen inhoudelijke.

Kan ik de SMI daarna weer naar ASS omzetten?

Ja, en die richting heeft zijn eigen lijst: SMI naar ASS verliest precisie en formaateigen inhoud, waaronder het STYLE-blok en de SYNC-structuur van SAMI. Die lijst verschilt van de lijst hierboven omdat de twee formaten verschillende dingen bewaren.

Gerelateerde hulpmiddelen