Naar de hoofdinhoud
SubtitleMatrix

TTML naar ASS

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 ASS. TTML bewaart een moment tot op de milliseconde: een p-element draagt zijn begin en eind als 00:00:04.126. ASS schrijft tijd in honderdsten van een seconde, dus elke waarde wordt op 10 ms afgerond; geen blok verschuift meer dan 5 ms.

Wat TTML buiten de cues bewaart, heeft in ASS geen plek: de XML-declaratie, de styling- en layout-tabellen in de head, metadata en de style- en region-verwijzingen op elk p-element verdwijnen. Dat is de formaateigen inhoud uit het overzicht. Opmaak die in de tekst zelf zit, zoals een cursieve span, wordt wel naar ASS-notatie overgezet.

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

Voorbeelden

Een gewoon TTML-bestand, omgezet naar ASS

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, 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

[Events]
Format: Layer, 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 regel voor regel 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, 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

[Events]
Format: Layer, 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.

Echte TTML-bestanden hebben soms gemengde regeleinden, een p-element zonder eigen begin of een div met een tijd erop. Vergelijk dit met het nette voorbeeld hierboven.

Veelgestelde vragen

Waarom zijn de tijdstippen van TTML naar ASS verschoven?

ASS 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 ASS?

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. ASS 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 ASS-uitvoer eruit als TTML daar naartoe gaat?

Als ASS: elk TTML-blok wordt één Dialogue-regel in [Events], met een laagveld waar SRT een nummer heeft. Daarboven staan [Script Info] en de stijlentabel; cue-nummers bestaan in ASS niet.

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

Als twee tekstregels met \N ertussen, de ASS-notatie voor een harde regelafbreking. De twee regels blijven bij elkaar in één Dialogue-regel.

Blijft de volgorde van TTML-blokken in ASS gelijk?

Ja, en er wordt op starttijd gesorteerd: vroegste eerst. Stond het bestand niet in volgorde, dan zet de ASS-uitvoer het recht; dat verandert de structuur, niet de inhoud.

Kan ik ASS weer naar TTML omzetten?

Ja, met een eigen lijst: ASS 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 ASS behouden?

Nee. De uitvoer is UTF-8 met Unix-regeleinden en zonder byteordemarkering, wat het TTML-bestand ook gebruikte. Een UTF-16-bestand of een Windows-codering wordt bij het inlezen gedecodeerd; de ASS-uitvoer is altijd dezelfde.

Gerelateerde hulpmiddelen