Format napisów TTML
Co potrafi wyrazić ten format
- Formatowanie tekstu
- Czcionki, kolor, obrys, cień
- Pozycja na ekranie
- Tak
- Czasy karaoke
- Nie
- Podziały wierszy w bloku
- Tak
- Oś czasu
- Czas początku i końca dla każdego bloku
- Dokładność czasów
- 1 ms
- Czasy zapisane jako numery klatek
- Nie
- Tekst od prawej do lewej
- Tak
Przykłady
Typowy plik TTML i to, co z niego czytamy
Plik
<?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>
Co zawiera
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 positionPrawa kolumna to nie przekonwertowany plik, tylko to, co ta strona odczytuje z lewej — i od czego zaczyna się każda konwersja tego pliku.
Trudny plik TTML i to, co mimo to z niego czytamy
Plik
<?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>
Co zawiera
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)Prawdziwe pliki przychodzą ze znacznikiem BOM, windowsowymi końcami wierszy, zbłąkaną linią przed znacznikiem czasu albo znacznikiem, którego nie da się odczytać. Nic nie rzuca wyjątku: to, czego nie da się zrozumieć, jest raportowane, a nie po cichu gubione.
Konwertuj TTML (Timed Text) na inny format
Każda z nich działa w całości w Twojej przeglądarce. Etykiety mówią, ile kosztuje dany kierunek, zanim go otworzysz.
- Dokładność
- Treści specyficzne dla formatu
- Formatowanie
- Pozycjonowanie
- Treści specyficzne dla formatu
- Treści specyficzne dla formatu
- Czasy
- Formatowanie
- Pozycjonowanie
- Dokładność
- Treści specyficzne dla formatu
- Formatowanie
- Pozycjonowanie
- Liczba klatek
- Treści specyficzne dla formatu
- Formatowanie
- Pozycjonowanie
- Treści specyficzne dla formatu
- Formatowanie
- Treści specyficzne dla formatu
- Formatowanie
- Pozycjonowanie
- Treści specyficzne dla formatu
- Dokładność
- Treści specyficzne dla formatu
- Czasy
- Formatowanie
- Pozycjonowanie
- Podziały wierszy
- Treści specyficzne dla formatu
- Formatowanie
- Pozycjonowanie
- Treści specyficzne dla formatu
Konwersja do tego formatu
- SubRip (SRT) → TTML (Timed Text)
- WebVTT (VTT) → TTML (Timed Text)
- Advanced SubStation Alpha (ASS) → TTML (Timed Text)
- SubStation Alpha (SSA) → TTML (Timed Text)
- YouTube SBV → TTML (Timed Text)
- SAMI (SMI) → TTML (Timed Text)
- LRC Lyrics → TTML (Timed Text)
- MicroDVD → TTML (Timed Text)
- SubtitleMatrix JSON → TTML (Timed Text)
- Plain Text (TXT) → TTML (Timed Text)
- CSV Spreadsheet → TTML (Timed Text)
TTML (Timed Text) to jeden z formatów napisów obsługiwanych przez tę stronę, a ta strona jest jego opisem: co potrafi przechować, czego nie potrafi i gdzie przekonwertować go dalej.
Powyższa tabela mówi wszystko — nie ma żadnej ukrytej listy funkcji. Gdy wiersz mówi „nie”, dokładnie to ginie przy konwersji do TTML, i każda strona konwersji linkowana poniżej mówi o tym, zanim otworzysz plik.
Każda z tych konwersji działa w Twojej przeglądarce. Nic nie jest wysyłane i nie potrzebujesz konta, co ma znaczenie przy materiałach objętych NDA, dokumentacją medyczną czy embargiem emisyjnym.
Częste pytania
Czym jest plik TTML?
`.ttml` to TTML, format tekstu synchronizowanego, w którym świat emisji i streamingu zapisuje napisy: dokument XML, którego `<head>` deklaruje nazwane style i regiony, a elementy `<p>` są napisami. Korzystają z niego pipeline'y napisów streamingowych, a profile SMPTE-TT i IMSC są na nim zbudowane.
Czy TTML przechowuje styl?
Tak, i więcej niż pozostałe formaty: tabelę stylów z krojami, rozmiarami, kolorami, obrysami i marginesami oraz znaczniki wewnątrz tekstu, więc jedna linia może być pogrubiona, kolorowa i umieszczona bez nazwanego stylu. Karaoke nie jest przechowywane: plik TTML mówi, kiedy blok się zaczyna i kończy, a nie kiedy zapala się sylaba. W praktyce `<styling>` trzyma style nazwane (`tts:color`, `tts:fontWeight`, `tts:fontFamily`), a `<layout>` regiony (`tts:origin`, `tts:extent`); `<p>` wskazuje je po nazwie (`style="s1" region="bottom"`).
Czy każdy blok TTML ma zarówno początek, jak i koniec?
Tak, a moment w pliku TTML zapisuje się jako `00:00:04.126`. To najdrobniejsza jednostka TTML — milisekunda — i wartość jest dokładna, więc blok może być krótki, długi albo nachodzić na następny bez żadnych ukrytych założeń.
Na jaki format najlepiej przekonwertować TTML?
Nic na tej stronie nie przechowa wszystkiego, co mieści plik TTML, więc nie ma kierunku bezstratnego — każda strona konwersji wymienia własną listę strat. Wybierz format docelowy po tym, z którą listą umiesz żyć, a nie po tym, który format widziałeś najczęściej.
Co plik TTML trzyma poza blokami napisów?
Deklarację XML i cały `<head>`: tabelę `<styling>` z nazwanymi stylami (`tts:color`, `tts:fontWeight`), tabelę `<layout>` z nazwanymi regionami (`tts:origin`, `tts:extent`) oraz ewentualne `<metadata>`. Elementy `<p>` odwołują się do nich po nazwie zamiast powtarzać definicje, więc zmianą jednego wpisu można przestylizować wszystkie napisy. Te odwołania leżą poza modelem bloku, dlatego konwersja do formatu bez nich raportuje stratę.