Timed Text Markup Language
XML W3C dla napisów i opisów, wymagany przez nadawców i serwisy strumieniowe. DFXP to nazwa jego pierwszego profilu, a wiele plików wciąż ją nosi. IMSC, EBU-TT-D i iTT Apple to także TTML, każdy z własnymi zwyczajami.
W skrócie
| Rozszerzenie | .ttml |
|---|---|
| Typ mediów | application/ttml+xml |
| Specyfikacja | W3C, Timed Text Markup Language 1 (TTML1), Recommendation. TTML2 go rozszerza; IMSC i EBU-TT-D to podzbiory do dystrybucji. |
| Dokładność czasu | Dowolna: ułamki sekundy, klatki lub ticki |
| Kodowanie tekstu | Zadeklarowane w XML. Prawie zawsze UTF-8. |
| Stylowanie | Nazwane style i atrybuty tts:: czcionka, rozmiar, kolor, tło, kursywa, pogrubienie, podkreślenie, przekreślenie, obrys |
| Pozycjonowanie | Regiony: pola umieszczane i dopasowywane dowolnie na obrazie |
| Mówcy | Agenci (ttm:agent), nazwani w nagłówku |
| W kontenerach | MP4 jako stpp (ISO/IEC 14496-30), w strumieniach DASH, CMAF i HLS |
Budowa pliku
Dokument XML: nagłówek, który nazywa style i regiony, oraz treść z akapitami, po jednym na każdy napis.
<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 · Korzeń
<tt>z przestrzeniami nazw TTML, językiem i zegarem, według którego liczone są czasy:ttp:frameRate,ttp:tickRate. - 2 · Nagłówek
Nazwane style, regiony ekranu i to, kto mówi.
- 3 · Czas
beginkażdego akapitu oraz jegoendalbodur. - 4 · Tekst
Napis. Fragmenty (
span) stylizują jego części, a<br/>łamie wiersz.
Czasy
TTML zapisuje czas na więcej sposobów niż jakikolwiek inny format napisów:
| Zapis | Co to jest |
|---|---|
00:00:23.500 |
Godziny, minuty, sekundy i ułamek |
00:00:23:12 |
Klatki po sekundach: dwanaście przy ttp:frameRate pliku |
23.5s, 23500ms, 1h |
Przesunięcie w godzinach, minutach, sekundach lub milisekundach |
564f |
Klatki |
235000000t |
Ticki, tyle co ttp:tickRate na sekundę |
Czas liczy się od tego, co go zawiera. begin akapitu liczy się od początku jego <div> i <body>, a akapit bez własnego końca kończy się razem z nimi.
Style
Styl to zbiór atrybutów tts:. Tekst przyjmuje je w kolejności: z regionu, a potem z body, div, akapitu i otaczającego go span. Każdy element przyjmuje style, które wskazuje (style="s1 s2", oraz te, do których one odsyłają), a potem własne atrybuty.
| Atrybut | Efekt | W Subtitld |
|---|---|---|
tts:fontStyle="italic" |
Kursywa | Zachowana |
tts:fontWeight="bold" |
Pogrubienie | Zachowane |
tts:textDecoration="underline", "lineThrough" |
Podkreślenie, przekreślenie | Zachowane |
tts:color |
Kolor tekstu: nazwa, #rrggbb, #rrggbbaa albo rgb() |
Zachowany, bez przezroczystości |
tts:displayAlign, tts:textAlign |
Położenie tekstu w regionie | Zachowane, jako jedno z dziewięciu miejsc |
tts:fontFamily, tts:fontSize |
Czcionka i rozmiar | Nie zachowane |
tts:backgroundColor, tts:textOutline |
Pole za tekstem, obrys | Nie zachowane |
<set> |
Styl zmieniający się w czasie | Nie zachowany |
Regiony
Region to pole na obrazie, umieszczone przez tts:origin i dopasowane przez tts:extent. Wewnątrz niego tts:displayAlign ustawia tekst u góry, pośrodku lub na dole (before, center, after), a tts:textAlign z boku lub na środku.
<region xml:id="top"
tts:origin="10% 10%"
tts:extent="80% 80%"
tts:displayAlign="before"/>
Subtitld ustala, gdzie trafia tekst, niezależnie od tego, czy region jest mierzony w procentach, pikselach czy komórkach, i wybiera najbliższe z dziewięciu miejsc, które nazywają {\an1} do {\an9} w SubRip. Zapisując plik, każde użyte miejsce zapisuje jako region o tej nazwie: bottom, top, top-left…
Gdy plik nie mówi. Domyślne wartości TTML ustawiają tekst w lewym górnym rogu regionu, ale odtwarzacze pokazują go na dole, wyśrodkowany, i Subtitld robi tak samo. Odczytuje też textAlign="start" w regionie bez rozmiaru i położenia jako wyśrodkowany: pliki zapisane przez pycaption, także przez starsze wersje Subtitld, ustawiają go w każdym regionie.
Profile
Większość TTML jest zapisana w profilu: podzbiorze języka z własnymi regułami. Subtitld czyta każdy z nich jako TTML.
| Profil | Gdzie jest używany | Jego zwyczaje |
|---|---|---|
| DFXP | Pierwszy profil TTML i rozszerzenie .dfxp |
Starsze pliki w przestrzeni nazw http://www.w3.org/2006/10/ttaf1 |
| IMSC 1 | Strumieniowanie przez DASH, CMAF i HLS | Profil W3C dla napisów i opisów w sieci |
| EBU‑TT‑D | Odtwarzacze online europejskich nadawców | Elementy często z prefiksem: <tt:p> |
| SMPTE‑TT | Napisy telewizji amerykańskiej w sieci | Dodatki SMPTE, dla napisów przeniesionych z emisji |
iTT (.itt) |
Dostawy do iTunes Store i Apple TV | Czasy w klatkach (ttp:timeBase="smpte") |
TTML w Subtitld
- Tekst każdego napisu i podziały wierszy
- Kursywa, pogrubienie, podkreślenie, przekreślenie i kolor
- Miejsce na ekranie
- Mówcy jako agenci
- Początek i koniec z dokładnością do milisekundy, w kolejności
- Czcionki, rozmiary, tła i obrysy wiersz po wierszu
- Dokładny rozmiar i położenie regionu
- Style zmieniające się w czasie, ruby, napisy graficzne
- Tłumaczenia obok oryginału, dubbing, twarze mówców
Zapisz projekt .usfx, aby zachować to, co jest w Subtitld.
Otwieranie pliku TTML
Subtitld otwiera pliki .ttml, .dfxp, .itt i .xml oraz:
- czyta TTML niezależnie od zapisu: w jego przestrzeni nazw, w starej przestrzeni DFXP albo z
tt:przed każdym elementem; - czyta każdą postać czasu, liczoną od
divibody, w których się znajduje; - stosuje style tak, jak robi to TTML, zachowując kursywę, pogrubienie, podkreślenie, przekreślenie i każdy kolor inny niż biały;
- umieszcza każdy napis tam, gdzie pokazuje go jego region;
- bierze agentów jako mówców, gotowych do dubbingu, a
xml:langpliku jako język projektu; - odczytuje zadeklarowane w pliku kodowanie oraz encje HTML, takie jak
.
Plik, który nie jest poprawnym XML, otwiera się z komunikatem podającym wiersz i kolumnę. Plik, który w ogóle nie jest TTML, zgłasza to wprost.
Eksport TTML
Eksportuj, a następnie Napisy i TTML lub DFXP, oferuje:
- TekstOryginał, tłumaczenie lub oba, z tłumaczeniem pod spodem.
- Nazwy mówcówPominięte, przed tekstem (Thom: …) albo jako agenci (
ttm:agent), we własnym sposobie TTML. - FormatowanieZachowane albo usunięte.
- Przesunięcie czasuKażdy napis wcześniej lub później o tyle samo.
- WyglądBiały z czarnym obrysem albo taki, jak rysuje go podgląd Subtitld: jego czcionka, kolor i półprzezroczyste tło.
Plik to TTML 1 w UTF-8. Czasy zapisane są jako 00:00:23.000, każde miejsce napisów jako region, formatowanie jako span, a podziały wierszy jako <br/>. Jego xml:lang to język tekstu, który zawiera. TTML i DFXP dostają ten sam plik; różni się tylko rozszerzenie.
TTML czy WebVTT?
WebVTT dla <track> na stronie internetowej: przeglądarki czytają go same. TTML dla nadawców, dla serwisów strumieniowych, które go wymagają, oraz dla odtwarzaczy, które go czytają, na przykład dash.js i Shaka Player. Strona WebVTT opisuje resztę.
Ciekawostki
TTML 1.0 został Rekomendacją W3C w listopadzie 2010, po szkicach nazwanych od pierwszego profilu: Distribution Format Exchange Profile, DFXP.
Stara przestrzeń nazw, http://www.w3.org/2006/10/ttaf1, pochodzi z szkiców z 2006 roku, gdy TTML oznaczał Timed Text Authoring Format. Pliki wciąż ją noszą.
W 2016 roku W3C otrzymało nagrodę Technology & Engineering Emmy za TTML, obok HBO, Netflix, Telestream i SMPTE.
Powiązane formaty
Otwórz go w Subtitld razem z wideo i dopasuj czasy na przebiegu fali dźwiękowej.