SSA naar TTML
Of plak ondertiteltekst
Wat deze conversie verandert
2 dingen vervallen of vragen om een beslissing
- 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 SSA om naar TTML. Sleep een bestand naar binnen — of plak de tekst — en je krijgt de TTML-versie terug. De conversie draait volledig in je browser, dus er wordt niets geüpload en je hebt geen account nodig.
De twee formaten bewaren niet dezelfde dingen, en het verschil is niet cosmetisch: karaoke en formaateigen constructies hebben in TTML geen plek. De lijst hierboven komt uit wat beide formaten kunnen uitdrukken, niet uit jouw bestand; het antwoord is dus hetzelfde voordat je iets laadt.
Eén bestand kan, een heel seizoen ook: de wachtrij werkt ze op volgorde af en de resultaten komen samen als één ZIP binnen.
Voorbeelden
Een typisch SSA-bestand, omgezet naar TTML
Invoer
[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal
[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,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines
Uitvoer
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<p begin="00:00:01.000" end="00:00:04.000">Hello there.</p>
<p begin="00:00:05.000" end="00:00:08.000"><span tts:fontStyle="italic">Italic</span> line.</p>
<p begin="00:00:09.000" end="00:00:12.000">Two<br/>lines</p> </body>
</tt>
Verloren in deze uitvoer: karaoke en formaateigen constructies. Alles wat overblijft klopt regel voor regel.
Dezelfde omzetting op een weerbarstige invoer
Invoer
[Script Info]
Title: Dirty SSA
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,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.Uitvoer
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<p begin="00:00:01.000" end="00:00:04.000"><span tts:fontWeight="bold">Bold</span> and <span tts:textDecoration="underline">underlined</span>.</p>
<p begin="00:00:05.000" end="00:00:08.000">A soft<br/>break and a {\p1}mystery{\p0} code.</p> </body>
</tt>
Zo ziet schade in echte bestanden eruit — gemengde regeleinden, losse spaties, lege velden. Vergelijk dit met het nette voorbeeld hierboven om te zien wat de parser vergeeft.
Veelgestelde vragen
Blijven vet en cursief bij SSA naar TTML bewaard?
Ja. Wat bij een stuk tekst hoort — vet, cursief, onderstreping, een kleur — wordt als TTML-opmaak in de tekst geschreven, bijvoorbeeld een <span> met tts:fontStyle="italic". De globale stijltabel van SSA gaat als formaateigen inhoud verloren, maar de nadruk die in de regels zelf stond, komt mee.
Blijven SSA-blokken in dezelfde volgorde in TTML staan?
Ja, en ze worden onderweg op starttijd gesorteerd — vroegste eerst, de volgorde die elke speler verwacht. Stond je SSA-bestand niet in volgorde, dan zet de TTML-uitvoer het recht; dat raakt de structuur van het bestand, niet de inhoud, en het is bewust gedaan.
Wat gebeurt er met karaoketiming van SSA naar TTML?
De timing gaat, de woorden blijven. Karaoke zit in de codes \k, \kf en \ko van een SSA-regel, die markeren wanneer elke lettergreep oplicht. TTML kent geen moment binnen een regel voor deze omzetting, dus de markeringen gaan eraf en de lettergrepen komen als gewone TTML-tekst aan.
Wat gebeurt er met het blok [Script Info] als het bestand TTML wordt?
Elke Dialogue:-regel wordt een <p>-element. De titel gaat verloren: TTML kent wel een <title>-element, maar deze omzetting schrijft geen <head> en dus ook geen <title>. Ook de stijltabel, de overige sleutels uit [Script Info], alle Comment:-regels en wat in [Fonts] of [Graphics] zit vallen weg.
Hoe ziet de uitvoer eruit als SSA TTML wordt?
Als TTML: een XML-document met een declaratie, een <tt>-wortel en een <body> met <p>-elementen; er is geen <head> en geen <title>. Elk SSA-blok wordt één <p>, in dezelfde volgorde, met dezelfde tekst.
Zijn de SSA-tijden exact in het TTML-bestand?
Ja, tot op de milliseconde — fijner gaat geen van beide formaten. SSA schrijft een moment als 0:00:04.13, TTML schrijft hetzelfde moment als begin="00:00:04.130"; er wordt niets afgerond of verschoven, en een blok dat 2,9 seconden in beeld stond, staat dat nog steeds.
Hoe komt een SSA-blok van twee regels in TTML uit?
Als twee regels binnen dezelfde <p>, gescheiden door een <br/>. Het paar blijft bij elkaar: de twee SSA-regels horen in de TTML-uitvoer nog steeds bij één ondertitel, en een speler toont ze samen.
Hoe komt de titel van het SSA-script in TTML terecht?
Niet: de titel gaat verloren. De uitvoer begint bij de XML-declaratie, dan <tt> en meteen <body>; er is geen <head> en geen <title>-element, dus de titel uit [Script Info] heeft nergens een plek. Hij hoort bij de formaateigen inhoud die in de lijst hierboven staat.