Timed Text Markup Language

OtwieranieZapisywanieXMLZe stylami

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ówapplication/ttml+xml
SpecyfikacjaW3C, Timed Text Markup Language 1 (TTML1), Recommendation. TTML2 go rozszerza; IMSC i EBU-TT-D to podzbiory do dystrybucji.
Dokładność czasuDowolna: ułamki sekundy, klatki lub ticki
Kodowanie tekstuZadeklarowane w XML. Prawie zawsze UTF-8.
StylowanieNazwane style i atrybuty tts:: czcionka, rozmiar, kolor, tło, kursywa, pogrubienie, podkreślenie, przekreślenie, obrys
PozycjonowanieRegiony: pola umieszczane i dopasowywane dowolnie na obrazie
MówcyAgenci (ttm:agent), nazwani w nagłówku
W kontenerachMP4 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. 1 · Korzeń

    <tt> z przestrzeniami nazw TTML, językiem i zegarem, według którego liczone są czasy: ttp:frameRate, ttp:tickRate.

  2. 2 · Nagłówek

    Nazwane style, regiony ekranu i to, kto mówi.

  3. 3 · Czas

    begin każdego akapitu oraz jego end albo dur.

  4. 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

Zachowane w .ttml
  • 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
Brak miejsca w formacie
  • 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 div i body, 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:lang pliku jako język projektu;
  • odczytuje zadeklarowane w pliku kodowanie oraz encje HTML, takie jak &nbsp;.

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

Okno eksportu Subtitld z wybranym TTML i mówcami zapisanymi jako agenci

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

2010

TTML 1.0 został Rekomendacją W3C w listopadzie 2010, po szkicach nazwanych od pierwszego profilu: Distribution Format Exchange Profile, DFXP.

ttaf1

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ą.

Emmy

W 2016 roku W3C otrzymało nagrodę Technology & Engineering Emmy za TTML, obok HBO, Netflix, Telestream i SMPTE.

Powiązane formaty

Masz plik .ttml do poprawienia?

Otwórz go w Subtitld razem z wideo i dopasuj czasy na przebiegu fali dźwiękowej.

Pobierz Subtitld