Naar de hoofdinhoud
SubtitleMatrix

TTML naar SSA

FormaatconversieTTML / DFXP
Of plak ondertiteltekst

Wat deze conversie verandert

2 dingen vervallen of vragen om een beslissing

  • Nauwkeurigheid

    tijdprecisie — de klok van de uitvoer is grover, dus elke tijdstempel wordt afgerond op de dichtstbijzijnde 10 ms

  • 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 TTML om naar SSA. De uitvoer krijgt een [Script Info]-kop, een [V4 Styles]-tabel en Dialogue-regels in [Events]. TTML schrijft tijd tot op de milliseconde, SSA in honderdsten van een seconde; elke waarde wordt daarom op 10 ms afgerond en geen blok verschuift meer dan 5 ms.

De koptabellen van TTML — styling, layout en metadata — hebben in SSA geen plek en verdwijnen; dat is de formaateigen inhoud uit het overzicht. Opmaak die in de tekst zelf zit, zoals een cursieve span, wordt wel naar SSA-notatie overgezet.

Een blok van twee regels wordt één Dialogue-regel met \N ertussen. De omzetting gebeurt lokaal in je browser, zonder upload; meerdere bestanden gaan samen in één ZIP.

Voorbeelden

Een gewoon TTML-bestand, omgezet naar SSA

Invoer

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
  <head>
    <styling>
      <style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div>
      <p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
      <p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
    </div>
  </body>
</tt>

Uitvoer

[Script Info]
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
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Hello {\i1}there{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,How are you?\NFine, thanks.

Hier gaan precisie en formaateigen inhoud verloren: de tijden zijn op honderdsten afgerond en de koptabellen verdwijnen. De tekst blijft gelijk.

Dezelfde omzetting op een weerbarstige invoer

Invoer

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    ttp:frameRate="25" xml:lang="en">
  <body>
    <div>
      <p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
      <p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
      <p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
      <p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom &amp; Jerry.</p>
    </div>
  </body>
</tt>

Uitvoer

[Script Info]
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
Dialogue: 0,0:00:01.50,0:00:03.50,Default,,0,0,0,,Loaded from an offset and a duration.
Dialogue: 0,0:00:04.00,0:00:06.50,Default,,0,0,0,,A coarser clock spelling.
Dialogue: 0,0:00:07.00,0:00:08.48,Default,,0,0,0,,Frames, at 25fps.
Dialogue: 0,0:00:09.00,0:00:11.00,Default,,0,0,0,,{\c&H000000FF&}Half-open{\c} and Tom &amp; Jerry.

Gemengde regeleinden, losse spaties en een div met een tijd erop komen in echte bestanden voor. Vergelijk dit met het nette voorbeeld hierboven.

Veelgestelde vragen

Waarom zijn de tijdstippen van TTML naar SSA verschoven?

SSA bewaart tijd als 0:00:04.13, in honderdsten van een seconde, terwijl TTML 00:00:04.126 schrijft. Elke tijd wordt daarom op 10 ms afgerond: 4,126 seconden wordt 4,13. Niets wordt uitgerekt of herschikt en geen blok verschuift meer dan 5 ms.

Wat gebeurt er met de TTML-proloog, de styling- en layout-tabellen in SSA?

Die verdwijnen. TTML bewaart uiterlijk en plaatsing in de head: de XML-declaratie, de styling-tabel met benoemde stijlen, de layout-tabel met benoemde regio’s, metadata en de verwijzingen daarop. SSA kent cues, geen document, dus niets uit die head heeft een plek. Opmaak binnen een p-element, zoals een cursieve span, wordt wel overgezet.

Hoe ziet de SSA-uitvoer eruit als TTML daar naartoe gaat?

Als SSA: elk TTML-blok wordt één Dialogue-regel in [Events], met een Marked-veld waar SRT een nummer heeft. Daarboven staan [Script Info] en de [V4 Styles]-tabel; cue-nummers bestaan in SSA niet.

Hoe komt een TTML-blok van twee regels in SSA terecht?

Als twee tekstregels met \N ertussen, de SSA-notatie voor een harde regelafbreking. Beide regels van het TTML-blok blijven in dezelfde Dialogue-regel.

Blijft de volgorde van TTML-blokken in SSA gelijk?

Ja, er wordt op starttijd gesorteerd, vroegste eerst. Een TTML-bestand dat de regels niet op volgorde had, komt hier recht te staan; de structuur verandert, de inhoud niet.

Kan ik SSA weer naar TTML omzetten?

Ja, met een eigen lijst: SSA naar TTML verliest karaoke en formaateigen inhoud. Die lijst is anders dan de lijst hierboven omdat beide formaten andere dingen vasthouden.

Blijft de tekencodering van het TTML-bestand in SSA behouden?

Nee, de uitvoer is UTF-8 met Unix-regeleinden en zonder byteordemarkering, ongeacht de codering van het TTML-bestand. Een afwijkende codering wordt bij het inlezen omgezet; de SSA-uitvoer is altijd gelijk.

Gerelateerde hulpmiddelen