Zum Inhalt springen
Free Subtitle Converter
Sprache
Farbschema
Unterstütze uns

XML-Untertitel erklärt: TTML, DFXP und IMSC

Was TTML-, DFXP- und IMSC-Dateien sind, wie ihre Zeitangaben funktionieren und was der Konverter dieser Website daraus liest und was nicht.

Von Syed Peera Saheb · Veröffentlicht

Die kurze Antwort

TTML, DFXP und IMSC sind XML-Untertiteldateien auf Basis der Timed Text Markup Language des W3C. DFXP ist ein früherer Name für TTML, und IMSC ist ein Profil davon, das für Streaming und Rundfunklieferungen verwendet wird.

Hast du eine .ttml-, .dfxp- oder .xml-Untertiteldatei und brauchst SRT oder VTT, kann der Konverter auf dieser Website Text, Zeiten, Zeilenumbrüche sowie kursiv, fett und unterstrichen lesen. Positionen, Farben und Schriftarten behält er nicht, und er liest nicht jede XML-Datei, die Untertitel enthält.

Eine Familie, mehrere Namen

TTML ist ein W3C-Standard für Timed Text. Während der Entstehung hieß es DFXP, Distribution Format Exchange Profile, und die TTML-1-Spezifikation vermerkt noch, dass der ältere Name in Profilnamen und Dateiendungen weiterlebt. In der Praxis enthalten eine .dfxp- und eine .ttml-Datei dieselbe Art von Dokument. TTML2 ist die zweite Version und bringt weitere Funktionen.

Weil TTML so umfangreich ist, definieren Branchen Profile: Teilmengen, die festlegen, welche Funktionen eine Datei nutzen darf. IMSC, das Profil Internet Media Subtitles and Captions, gehört zu den verbreitetsten. Seine aktuellen Versionen definieren ein reines Textprofil und ein reines Bildprofil. EBU-TT ist ein Profil europäischer Rundfunkanstalten, SMPTE-TT wird im amerikanischen Fernsehen verwendet. Alle beginnen mit einem <tt>-Wurzelelement.

So sieht eine TTML-Datei aus

Ein TTML-Dokument hat einen Head und einen Body. Der Head kann Stile wie eine Schriftart oder Farbe definieren sowie Regionen, also Bereiche des Bildschirms. Der Body enthält Absätze, <p>-Elemente, jeweils mit Start- und Endzeit und dem Untertiteltext. Ein <br/> beginnt eine neue Zeile, und <span>-Elemente formatieren oder timen Teile einer Zeile.

Eine kurze TTML-Datei
<?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:tickRate="10000000">
  <head>
    <styling><style xml:id="it" tts:fontStyle="italic" tts:color="yellow"/></styling>
    <layout><region xml:id="top" tts:origin="10% 5%" tts:extent="80% 20%"/></layout>
  </head>
  <body>
    <div>
      <p begin="12000000t" end="35000000t" region="top">Hello<br/><span style="it">there</span></p>
    </div>
  </body>
</tt>

Wie TTML-Zeitangaben funktionieren

TTML erlaubt mehrere Schreibweisen für eine Zeit. Uhrzeiten sehen aus wie 00:00:01.200 oder 00:00:01:05 mit einer Bildnummer am Ende. Offset-Zeiten sind eine Zahl mit Einheit: 1.2s, 1200ms, 30f für Frames oder 12000000t für Ticks. Ticks sind in Dateien von Streamingdiensten üblich; das tickRate des Wurzelelements gibt an, wie viele Ticks eine Sekunde ergeben, bei einer Tick-Rate von 10.000.000 sind 12000000t also 1,2 Sekunden.

Zeiten können auch relativ sein. Ein div kann eine eigene Startzeit haben, zu der die Absätze darin addiert werden, ein Absatz kann statt einer Endzeit eine Dauer angeben, und ein Absatz ohne Zeiten kann sie von seinen Spans übernehmen. Deshalb verrechnen sich einfache Suchen-und-Ersetzen-Tools bei TTML-Zeiten oft.

Was diese Website liest

Der Konverter erkennt TTML an seinem Wurzelelement <tt>, unabhängig von der Dateiendung, daher lassen sich .ttml-, .dfxp- und .xml-Dateien öffnen. Das Beispiel oben wird zu einem Untertitel von 1,2 bis 3,5 Sekunden mit zwei Zeilen, die zweite kursiv. Im Einzelnen liest er:

  • Uhrzeiten mit Bruchteilen oder Frames sowie Offset-Zeiten in Stunden, Minuten, Sekunden, Millisekunden, Frames und Ticks.
  • Die Einstellungen frameRate, frameRateMultiplier, subFrameRate und tickRate am Wurzelelement. Ohne Tick-Rate leitet er eine aus der Bildrate ab oder nutzt einen Tick pro Sekunde, wie es die Spezifikation beschreibt.
  • Begin, end und dur bei Absätzen und Spans, wobei die Startzeiten des umschließenden body und der divs addiert werden.
  • Als <br/> geschriebene Zeilenumbrüche.
  • Kursiv, fett und unterstrichen, ob direkt an einem Element oder über einen benannten Stil gesetzt.
  • Elemente mit Namespace-Präfix, etwa <tt:p> in EBU-TT und manchen IMSC-Dateien. Metadaten wie Notizen für Bearbeiter werden übersprungen und werden nie zu Untertiteltext.

Was es weglässt

Der Konverter behält Wörter und Zeiten und verwirft die Darstellung. Regionen und Positionen, Farben, Schriftarten, Größen, Hintergründe, Konturen und Einstellungen zur Textrichtung werden nicht übernommen. Zeigt eine Datei zwei Absätze gleichzeitig in verschiedenen Regionen, zum Beispiel zwei Sprecher oben und unten, werden daraus zwei überlappende Untertitel; die Untertitel-Prüfung weist dich darauf hin.

Manche XML-Untertiteldateien sind gar kein TTML, und die Seite meldet, dass sie sie nicht als Untertitel erkennt. Dazu gehört das eigene timedtext-XML von YouTube, dessen Wurzelelement <timedtext> oder <transcript> statt <tt> ist. Bildbasierte IMSC-Dateien, die Bilder des Textes speichern, enthalten keinen lesbaren Text. Ungewöhnliche Timing-Modi wie SMPTE-Drop-Frame-Timecodes werden nicht gesondert behandelt, vergleiche also ein paar Untertitel gegen Ende der Vorschau mit dem Video.

Was es schreibt

Bei der Konvertierung in TTML oder DFXP schreibt der Konverter ein einfaches TTML-1-Dokument: Jeder Untertitel wird zu einem Absatz mit Start- und Endzeit als Uhrzeit in Millisekunden, Zeilenumbrüche werden zu <br/>, und kursiv, fett und unterstrichen werden zu Spans mit dem passenden Stilattribut. Es gibt keinen head mit Stilen oder Regionen, daher nutzen Player ihr Standardaussehen. Die Option DFXP schreibt dasselbe Dokument mit der Endung .dfxp.

Das Sprachattribut am Wurzelelement bleibt leer, weil der Konverter nicht wissen kann, in welcher Sprache deine Untertitel sind. Manche Plattformen verlangen es. Ist das bei deiner der Fall, öffne die Datei in einem Texteditor und trage bei xml:lang vor dem Upload einen Code wie en oder es ein.

Die Datei, die der Konverter aus dem Beispiel schreibt
<?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="">
  <body>
    <div>
      <p begin="00:00:01.200" end="00:00:03.500">Hello<br/><span tts:fontStyle="italic">there</span></p>
    </div>
  </body>
</tt>

TTML oder DFXP in SRT oder VTT umwandeln

Die Konvertierung dauert ein paar Sekunden, und die Datei bleibt auf deinem Gerät.

  • Öffne den TTML-zu-SRT- oder DFXP-zu-SRT-Konverter oder den Hauptkonverter und wähle deine .ttml-, .dfxp- oder .xml-Datei.
  • Prüfe die Zusammenfassung. Sie zeigt, wie viele Untertitel gefunden wurden und ob Absätze Zeitangaben hatten, die nicht gelesen werden konnten.
  • Wähle das Ausgabeformat, etwa SRT oder VTT, und sieh dir die Vorschau an.
  • Spiel das Ergebnis mit deinem Video ab und vergleiche einen Untertitel nahe am Anfang und einen nahe am Ende, falls die Datei einen Timing-Modus nutzt, den der Konverter nicht verarbeitet.
  • Lade die Datei herunter. Sie wird als UTF-8 gespeichert.

Wann TTML sinnvoll ist und wann nicht

Nutze TTML oder DFXP, wenn eine Plattform, ein Streamingdienst oder ein Sender es verlangt; deren Lieferspezifikationen nennen meist ein Profil, und eine schlichte TTML-1-Datei erfüllt es eventuell nicht. Für den Alltag in Playern, Editoren und Videoplattformen sind SRT oder WebVTT einfacher und breiter unterstützt. Bekommst du eine TTML-Datei und willst sie nur ansehen oder bearbeiten, konvertiere sie in SRT.

Behalte die Originaldatei in jedem Fall. Bei der Konvertierung in SRT gehen Regionen und Styling endgültig verloren; musst du später wieder TTML mit den ursprünglichen Positionen liefern, brauchst du die Quelle und keine aus SRT neu erstellte TTML-Datei.

Häufige Fragen

Ist DFXP dasselbe wie TTML? Praktisch ja. DFXP war der Name, solange TTML entworfen wurde, und der Konverter behandelt beide gleich.

Warum meldet meine .xml-Datei, sie sei keine Untertiteldatei? Entweder ist sie kein TTML, zum Beispiel timedtext-XML von YouTube, oder sie enthält kein <tt>-Wurzelelement. Der Konverter liest solche Dateien nicht.

Behält die konvertierte SRT die Position jedes Untertitels? Nein. SRT hat keine Standardmethode, Untertitel zu platzieren, und der Konverter überträgt TTML-Regionen in kein Format.

Untertitel-Konverter öffnen
Spendier mir einen Kaffee