Zum Hauptinhalt springen
SubtitleMatrix

TTML-Untertitelformat

Was dieses Format ausdrücken kann

Textformatierung
Schriften, Farbe, Kontur, Schatten
Positionierung auf dem Bildschirm
Ja
Karaoke-Zeitangaben
Nein
Zeilenumbrüche innerhalb eines Blocks
Ja
Zeitachse
Start- und Endzeit für jeden Block
Zeitauflösung
1 ms
Zeitangaben als Bildnummern gespeichert
Nein
Rechts-nach-links-Text
Ja

Beispiele

Eine typische TTML-Datei und was daraus gelesen wird

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

Was sie enthält

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

Die rechte Seite ist keine umgewandelte Datei, sondern das, was diese Seite aus der linken liest — und der Ausgangspunkt jeder Umwandlung dieser Datei.

Eine unordentliche TTML-Datei und was trotzdem gelesen wird

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

Was sie enthält

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)

So sehen echte Dateien aus: gemischte Zeilenenden, verirrte Leerzeichen, leere Felder. Vergleichen Sie das mit dem sauberen Beispiel oben, dann sehen Sie, was der Parser verzeiht.

TTML (Timed Text) in ein anderes Format konvertieren

Jede davon läuft vollständig in Ihrem Browser. Die Beschriftungen sagen, was diese Richtung kostet, bevor Sie sie öffnen.

In dieses Format konvertieren

TTML (Timed Text) ist das Format, in dem Fernsehen und Streaming Untertitel beschreiben: ein XML-Dokument, dessen <head> benannte Stile und Regionen deklariert, während die <p>-Elemente im <body> die eigentlichen Untertitel sind. Diese Seite ist die Referenz dazu — was TTML speichern kann, was nicht, und wohin es sich umwandeln lässt.

Die Tabelle oben ist die vollständige Liste; eine versteckte Funktionsliste gibt es nicht. Steht dort Nein, ist genau das verloren, wenn Sie nach TTML hineinkonvertieren — und jede unten verlinkte Umwandlungsseite sagt es Ihnen, bevor Sie eine Datei öffnen.

Alle diese Umwandlungen laufen in Ihrem Browser. Nichts wird hochgeladen, keine Anmeldung ist nötig — das zählt bei Material unter Geheimhaltungsvereinbarung, bei Patientendaten oder bei einer Sendesperrfrist.

Häufige Fragen

Was ist eine TTML-Datei?

TTML ist das getaktete Textformat, in dem Rundfunk und Streaming Untertitel schreiben: ein XML-Dokument mit einem <head>, der benannte Stile (tts:color, tts:fontWeight) und Regionen (tts:origin, tts:extent) deklariert, und <p>-Elementen im <body>, die die Untertitel tragen. Die Profile SMPTE-TT und IMSC bauen darauf auf.

Speichert TTML Formatierung?

Ja, und mehr als die anderen Formate: eine Stiltabelle für Schrift, Größe, Farbe, Kontur und Rand sowie Codes direkt im Text, sodass eine Zeile fett, farbig und platziert sein kann, ohne einen benannten Stil zu brauchen. Karaoke speichert TTML nicht — es hält fest, wann ein Untertitel beginnt und endet, nicht wann eine Silbe aufleuchtet.

Hat jeder TTML-Untertitel Start und Ende?

Ja, und ein Zeitpunkt liest sich als 00:00:04.126. TTML zählt intern in Ticks; die Auflösung legt ttp:tickRate fest, und je nach Profil stehen Zeiten als Uhrzeit, als Sekundenangabe wie 1.5s oder als Einzelbild wie 00:00:07:00 in der Datei. Gelesen wird auf die Millisekunde genau.

In welches Format sollte ich TTML umwandeln?

Keine Richtung ist kostenlos, denn kein Zielformat nimmt alles auf, was TTML hält. Jede Umwandlungsseite nennt ihre eigene Verlustliste; wählen Sie das Ziel danach, mit welcher Liste Sie leben können.

Was behält eine TTML-Datei außerhalb ihrer Untertitel?

Die XML-Deklaration und den ganzen <head>: eine <styling>-Tabelle mit benannten Stilen, eine <layout>-Tabelle mit benannten Regionen und beliebige <metadata>. Jedes <p> verweist über style="s1" oder region="bottom" auf diese Namen, statt die Werte zu wiederholen — deshalb geht bei einer Umwandlung in ein Format ohne diese Tabellen ein formatspezifischer Teil verloren.