Naar de hoofdinhoud
SubtitleMatrix

TTML-ondertitelformaat

FormaatconversieTTML / DFXP

Wat dit formaat kan uitdrukken

Tekstopmaak
Lettertypen, kleur, contour, schaduw
Positionering op het scherm
Ja
Karaoke-timing
Nee
Regeleinden binnen een blok
Ja
Tijdlijn
Begin- en eindtijd voor elk blok
Tijdresolutie
1 ms
Tijden opgeslagen als framenummers
Nee
Tekst van rechts naar links
Ja

Voorbeelden

Een gewoon TTML-bestand, en wat eruit wordt gelezen

Bestand

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

Wat het bevat

2 cues, 3 lines of text

  00:00:01.000 → 00:00:03.500
    Hello there.   [italic ×1]
    [region="bottom" style="s1"]
  00:00:03.500 → 00:00:06.000
    How are you?
    Fine, thanks.
    [region="bottom"]

Outside the cues:
  prolog     an XML declaration and the namespace bindings, kept as they came in
  styling    1 × <style> — "s1", the colour and weight a paragraph points at by name
  layout     1 × <region> — "bottom", the origin and extent a paragraph points at by name
  resolved   the head is kept as it was written and is not applied here — a paragraph's style="s1" region="bottom" stays an attribute, not a colour or a screen position

De rechterkant is geen omgezet bestand — het is wat deze site uit de linkerkant leest, en waar elke omzetting van dat bestand begint.

Een weerbarstig TTML-bestand, en wat er nog uit wordt gelezen

Bestand

<?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>
    <div begin="00:00:01.000" end="00:00:05.000">
      <p>Inherits its timing from the div, which we do not resolve.</p>
      <p begin="00:00:06.000" end="00:00:07.000">This one has its own timing.</p>
    </div>
    <!-- <p begin="00:00:08.000" end="00:00:09.000">commented out</p> -->
    <div>
      <p begin="00:00:10.000"/>
      <p begin="00:00:11.000" end="00:00:12.000">Last one.</p>
    </div>
  </body>
</tt>

Wat het bevat

3 cues, 2 lines of text

  00:00:06.000 → 00:00:07.000
    This one has its own timing.
  00:00:10.000 → 00:00:12.000
    (no text)
  00:00:11.000 → 00:00:12.000
    Last one.

Outside the cues:
  prolog     an XML declaration and the namespace bindings, kept as they came in
  head       none — no <styling> and no <layout>, and no paragraph points at one either
  comments   the commented-out <p> stays a comment, in the place it was written
  divs       the timings on an enclosing <div> are not pushed down onto the paragraphs inside it

Reported while reading — repaired or skipped, never silently:
  1 × paragraphs with no readable begin time of their own (they were skipped — see the note about timing inherited from an enclosing div)
  1 × paragraphs with neither an end time nor a duration of their own (their end times were generated)

Echte bestanden komen met een div die zijn tijd aan de p’s eronder probeert door te geven, een p zonder eigen eindtijd of een uitgecommentarieerd blok. Niets daarvan gooit een fout: wat niet begrepen wordt, wordt gemeld in plaats van stil weggegooid.

TTML (Timed Text) naar een ander formaat omzetten

Elk van deze draait volledig in je browser. De labels zeggen wat die richting kost voordat je hem opent.

TTML → LRC verliest timing, stijlen, positie, precisie en formaateigen inhoud.
  • Timing
  • Opmaak
  • Positionering
  • Nauwkeurigheid
  • Formaatspecifieke inhoud

Naar dit formaat omzetten

TTML is een van de ondertitelformaten die deze site verwerkt, en deze pagina is de referentie: wat het kan bewaren, wat het niet kan, en een pagina voor elk formaat waar je het naartoe kunt omzetten.

De tabel hierboven is het volledige verhaal — er is geen verborgen lijst met mogelijkheden. Staat er nee, dan is dat precies wat je verliest bij het omzetten naar TTML, en elke conversiepagina hieronder zegt dat voordat je een bestand opent.

Elke omzetting draait in je browser. Er wordt niets geüpload en je hebt geen account nodig; dat maakt uit voor materiaal onder een geheimhoudingsafspraak, een patiëntendossier of een uitzendembargo.

Veelgestelde vragen

Wat is een TTML-bestand?

Een TTML-bestand, met de extensie .ttml, is een XML-document voor timed text: het formaat waarin omroep en streaming hun ondertitels vastleggen. De head declareert benoemde stijlen en regio’s, en de p-elementen in de body zijn de ondertitels; profielen als SMPTE-TT en IMSC bouwen erop voort.

Bewaart TTML opmaak?

Ja, en meer dan de andere formaten: een tabel met lettertypen, groottes, kleuren, randen en marges, plus opmaak binnen de tekst zelf, zodat één regel vet, gekleurd en geplaatst kan zijn zonder benoemde stijl. In het bestand staan die twee tabellen in de head: styling houdt de benoemde stijlen, layout de benoemde regio’s, en een p verwijst er met een naam naar in plaats van ze te herhalen. Karaoke-timing bewaart het niet: een blok legt vast wanneer het begint en eindigt, niet wanneer een lettergreep oplicht.

Heeft elk TTML-blok een begin en een eind?

Ja, en een moment leest als 00:00:04.126. Fijner dan de milliseconde gaat TTML niet, en het getal is exact: een blok kan kort of lang zijn of het volgende overlappen zonder dat er iets wordt geïmpliceerd.

Naar welk formaat kan ik TTML het beste omzetten?

Geen enkel doelformaat neemt alles over wat TTML vasthoudt, dus er is geen richting zonder verlies. Kies op basis van de verlieslijst die je kunt accepteren, niet op basis van welk formaat je toevallig het vaakst tegenkomt.

Wat bewaart een TTML-bestand buiten zijn cues?

De XML-declaratie en de hele head: een styling-tabel met benoemde stijlen, een layout-tabel met benoemde regio’s en eventuele metadata. Elke p verwijst daar met een naam naar in plaats van de waarden te herhalen, zodat één ingreep in de tabel alle ondertitels tegelijk kan restylen. Die verwijzingen staan op de p en niet in het cue-model, en daarom meldt een omzetting naar een formaat zonder zulke tabellen een verlies.