Timed Text Markup Language
Das XML des W3C für Untertitel und Untertitelung, wie Sender und Streamingdienste es verlangen. DFXP war der Name seines ersten Profils, und viele Dateien tragen ihn noch. IMSC, EBU-TT-D und Apples iTT sind ebenfalls TTML, jedes mit eigenen Gewohnheiten.
Auf einen Blick
| Dateiendung | .ttml |
|---|---|
| Medientyp | application/ttml+xml |
| Spezifikation | W3C, Timed Text Markup Language 1 (TTML1), eine Recommendation. TTML2 erweitert sie; IMSC und EBU-TT-D sind Teilmengen für die Verbreitung. |
| Zeitgenauigkeit | Beliebig: Bruchteile von Sekunden, Bilder oder Ticks |
| Zeichenkodierung | Im XML angegeben. Fast immer UTF-8. |
| Gestaltung | Benannte Stile und tts:-Attribute: Schrift, Größe, Farbe, Hintergrund, kursiv, fett, unterstrichen, durchgestrichen, Kontur |
| Positionierung | Regionen: Kästen, die überall im Bild platziert und dimensioniert werden |
| Sprecher | Agenten (ttm:agent), im Kopf benannt |
| In Containern | MP4 als stpp (ISO/IEC 14496-30), in DASH-, CMAF- und HLS-Streams |
Aufbau einer Datei
Ein XML-Dokument: ein Kopf, der Stile und Regionen benennt, und ein Körper aus Absätzen, je einer pro Untertitel.
<tt xml:lang="en" …> <head>styles, regions</head> <body><div> <p begin="00:00:23.000" end="00:00:24.500"> You're a jerk,<br/>Thom.</p> </div></body> </tt>
- 1 · Wurzel
<tt>, mit den Namensräumen von TTML, der Sprache und dem Takt, in dem die Zeiten zählen:ttp:frameRate,ttp:tickRate. - 2 · Kopf
Benannte Stile, die Regionen des Bildschirms und wer spricht.
- 3 · Zeitangabe
Das
beginjedes Absatzes und seinendoderdur. - 4 · Text
Der Untertitel. Spans gestalten Teile davon, und
<br/>bricht die Zeile um.
Zeiten
TTML schreibt eine Zeit auf mehr Arten als jedes andere Untertitelformat:
| Geschrieben | Bedeutung |
|---|---|
00:00:23.500 |
Stunden, Minuten, Sekunden und ein Bruchteil |
00:00:23:12 |
Bilder nach den Sekunden: zwölf bei der ttp:frameRate der Datei |
23.5s, 23500ms, 1h |
Ein Versatz in Stunden, Minuten, Sekunden oder Millisekunden |
564f |
Bilder |
235000000t |
Ticks, ttp:tickRate davon pro Sekunde |
Zeiten zählen ab dem, was sie enthält. Das begin eines Absatzes zählt ab dem Anfang seines <div> und seines <body>, und ein Absatz ohne eigenes Ende endet mit ihnen.
Stile
Ein Stil ist eine Menge von tts:-Attributen. Text übernimmt sie der Reihe nach: aus seiner Region, dann aus dem Body, dem div, dem Absatz und dem Span um ihn herum. Jedes Element übernimmt die Stile, die es nennt (style="s1 s2" und die, die diese nennen), dann seine eigenen Attribute.
| Attribut | Wirkung | In Subtitld |
|---|---|---|
tts:fontStyle="italic" |
Kursiv | Beibehalten |
tts:fontWeight="bold" |
Fett | Beibehalten |
tts:textDecoration="underline", "lineThrough" |
Unterstrichen, durchgestrichen | Beibehalten |
tts:color |
Textfarbe: ein Name, #rrggbb, #rrggbbaa oder rgb() |
Beibehalten, ohne ihre Transparenz |
tts:displayAlign, tts:textAlign |
Wo der Text in seiner Region sitzt | Beibehalten, als einer von neun Plätzen |
tts:fontFamily, tts:fontSize |
Schrift und Größe | Nicht beibehalten |
tts:backgroundColor, tts:textOutline |
Ein Kasten hinter dem Text, eine Kontur | Nicht beibehalten |
<set> |
Ein Stil, der sich im Lauf der Zeit ändert | Nicht beibehalten |
Regionen
Eine Region ist ein Kasten im Bild, platziert durch tts:origin und dimensioniert durch tts:extent. Darin setzt tts:displayAlign den Text oben, in der Mitte oder unten (before, center, after), und tts:textAlign an eine Seite oder in die Mitte.
<region xml:id="top"
tts:origin="10% 10%"
tts:extent="80% 80%"
tts:displayAlign="before"/>
Subtitld ermittelt, wo der Text landet, ob die Region in Prozent, Pixeln oder Zellen gemessen wird, und nimmt den nächsten der neun Plätze, die {\an1} bis {\an9} von SubRip benennen. Beim Schreiben einer Datei ist jeder verwendete Platz eine Region dieses Namens: bottom, top, top-left…
Wenn eine Datei nichts sagt. Die eigenen Vorgaben von TTML setzen Text oben links in seine Region, doch Player zeigen ihn unten und zentriert, und Subtitld tut es ebenso. Außerdem liest es textAlign="start" in einer Region ohne Größe oder Platz als zentriert: Dateien, die mit pycaption geschrieben wurden, darunter ältere Versionen von Subtitld, setzen es auf jede Region.
Profile
Die meiste TTML wird nach einem Profil geschrieben: einer Teilmenge der Sprache mit eigenen Regeln. Subtitld liest jedes davon als TTML.
| Profil | Verwendet in | Seine Gewohnheiten |
|---|---|---|
| DFXP | Das erste Profil von TTML, und die Endung .dfxp |
Ältere Dateien im Namensraum http://www.w3.org/2006/10/ttaf1 |
| IMSC 1 | Streaming über DASH, CMAF und HLS | Das Profil des W3C für Untertitel und Untertitelung online |
| EBU‑TT‑D | Online-Player europäischer Sender | Elemente oft mit einem Präfix geschrieben: <tt:p> |
| SMPTE‑TT | Untertitelung des amerikanischen Fernsehens online | Ergänzungen von SMPTE, für aus dem Rundfunk übernommene Untertitel |
iTT (.itt) |
Lieferungen an Apples iTunes Store und Apple TV | Zeiten in Bildern (ttp:timeBase="smpte") |
TTML in Subtitld
- Der Text jedes Untertitels und die Zeilenumbrüche
- Kursiv, fett, unterstrichen, durchgestrichen und Farbe
- Wo er auf dem Bildschirm steht
- Sprecher als Agenten
- Start und Ende, auf die Millisekunde genau, in Reihenfolge
- Schriften, Größen, Hintergründe und Konturen zeile für zeile
- Genaue Größe und Platz einer Region
- Stile, die sich im Lauf der Zeit ändern, Ruby, Bilduntertitel
- Übersetzungen neben dem Original, Synchronisationen, Gesichter der Sprecher
Speichern Sie ein .usfx-Projekt, um das zu behalten, was Subtitld ausmacht.
Eine TTML-Datei öffnen
Subtitld öffnet .ttml, .dfxp, .itt und .xml und:
- liest TTML, wie auch immer sie geschrieben ist: in ihrem Namensraum, im alten DFXP-Namensraum oder mit
tt:vor jedem Element; - liest jede Form der Zeit, jeweils ab dem div und body, in dem sie steht;
- folgt den Stilen, so wie TTML sie anwendet, und behält kursiv, fett, unterstrichen, durchgestrichen und jede Farbe außer Weiß;
- setzt jeden Untertitel dorthin, wo seine Region ihn zeigt;
- übernimmt Agenten als Sprecher, bereit zur Synchronisation, und das
xml:langder Datei als Sprache des Projekts; - liest die Kodierung, die die Datei angibt, und HTML-Entitäten wie
.
Eine Datei, die kein wohlgeformtes XML ist, öffnet mit einer Meldung, die Zeile und Spalte nennt. Eine Datei, die gar kein TTML ist, sagt das.
TTML exportieren
Export, dann Untertitel und TTML oder DFXP bietet:
- TextDas Original, eine Übersetzung oder beides, die Übersetzung darunter.
- SprechernamenWeggelassen, vor dem Text (Thom: …), oder als Agenten (
ttm:agent), die eigene Schreibweise von TTML. - FormatierungBeibehalten oder entfernt.
- Zeiten verschiebenJeder Untertitel um denselben Betrag früher oder später.
- LookWeiß mit schwarzer Kontur, oder so, wie Subtitlds Vorschau es zeichnet: mit ihrer Schrift, Farbe und einem halbtransparenten Kasten.
Die Datei ist TTML 1 in UTF-8. Zeiten werden als 00:00:23.000 geschrieben, jeder Platz der Untertitel als Region, Formatierung als Spans und Zeilenumbrüche als <br/>. Ihr xml:lang ist die Sprache des enthaltenen Textes. TTML und DFXP erhalten dieselbe Datei; nur die Endung unterscheidet sich.
TTML oder WebVTT?
WebVTT für ein <track> auf einer Webseite: Browser lesen es selbst. TTML für Sender, für Streamingdienste, die es verlangen, und für Player, die es lesen, etwa dash.js und Shaka Player. Die Seite zu WebVTT bietet den Rest.
Wissenswertes
TTML 1.0 wurde im November 2010 eine Recommendation des W3C, nach Entwürfen, die nach seinem ersten Profil benannt waren: dem Distribution Format Exchange Profile, DFXP.
Der alte Namensraum http://www.w3.org/2006/10/ttaf1 stammt aus den Entwürfen von 2006, als TTML das Timed Text Authoring Format war. Dateien tragen ihn noch.
2016 erhielt das W3C einen Technology & Engineering Emmy für TTML, neben HBO, Netflix, Telestream und SMPTE.
Verwandte Formate
Öffnen Sie sie in Subtitld mit dem Video und passen Sie die Zeiten an der Wellenform an.