Formát TTML
autor: Michal Staša
datum: 23. prosince 2013, 13:10
odkaz: https://www.titulkovani.cz/o-titulkovani/index.php?blog=format-ttml
Formát titulků TTML (Timed Text Markup Language) je na tom podobně jako dříve představený formát WebVTT. Oba formáty začaly vznikat pro použití v elementu track v HTML5. Úvod ke značce video tedy tentokrát přeskočím a odkážu se na předchozí díl našeho seriálu o formátech titulků. Ostatně předchozí příspěvek o WebVTT bude pro dnešní díl poměrně užitečný.
Formát WebVTT se inspiroval formátem SRT – odnesl si tak jeho jednoduchost a možnost jednoduchého čtení lidmi. Formát TTML šel opačnou cestou a je založen na XML, tedy obecném značkovacím jazyce. XML je na první pohled hůře srozumitelný formát, nicméně je vyhovující pro strojové zpracování. Na půdě standardizace HTML5 sice nyní převažují větší sympatie k WebVTT, nicméně TTML si díky svým vlastnostem a rozšířitelnosti našel příznivce v oblasti televizního a filmového průmyslu. Např. nově vzníkající formát EBU-TT, který vyvíjí Evropská vysílací unie, je založen na TTML a má ambice nahradit letitý formát EBU STL (o tom asi příště). Máme tak na světě dva moderní formáty titulků (WebVTT a TTML), které si trochu konkurují. V tuto chvíli výsledek soupeření pravděpodobně dopadne tak, že TTML zůstane spíše „průmyslovým“ standardem a WebVTT se stane formátem pro široké masy internetu. Je třeba ale doplnit, že na rozdíl od WebVTT byla již finální specifikace TTML vydána a TTML je trochu napřed.
Mimochodem dřívější označení formátu TTML bylo DFXP (Distribution Format Exchange Profile) a někde je tak stále tento formát označovaný. Nicméně nyní již k představení samotného formátu. Jedná se o klasický textový soubor s XML strukturou a pokud znáte HTML/XML, nebude pro vás zápis překvapením. Jednoduchý titulek může vypadat třeba takto:
<p begin="00:00:00.000" end="00:00:02.000">
Titulek<br/>
na dvou řádcích
</p>
Schopnosti formátu jsou nasnadě: široké možnosti stylování, umístění textu v rámci obrazu, využití metadat apod. – tedy vše, co by moderní formát titulků měl umět. Styly, umístění (regiony) a další nastavení se definují v hlavičce (head). V těle (body) jsou pak jednotlivé titulky.
Následující příklad obsahuje pro vyzkoušení několik možností formátu. První titulek není navázán na žádný region, další jsou v jednom ze čtyř definovaných regionů. Zajímavostí je třetí region, který by měl postupně zprůhledňovat písmo. Čtvrtý region by měl posouvat svoje umístění.
<?xml version="1.0" encoding="utf-8"?>
<tt xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
ttp:timeBase="media"
xmlns:tts="http://www.w3.org/ns/ttml#styling"
xml:lang="cs"
xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
tts:extent="450px 360px">
<head>
<metadata>
<ttm:title>Ukázka titulků TTML</ttm:title>
<ttm:desc>Zde si ukážeme možnosti TTML.</ttm:desc>
</metadata>
<styling>
<style id="s0" tts:backgroundColor="black" tts:fontStyle="normal" tts:fontSize="16" tts:fontFamily="sansSerif" tts:color="white" />
</styling>
<layout>
<region xml:id="r1">
<style tts:extent="306px 114px"/>
<style tts:backgroundColor="red"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:padding="3px 40px"/>
</region>
<region xml:id="r2">
<style tts:origin="40px 40px"/>
<style tts:extent="306px 114px"/>
<style tts:backgroundColor="red"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:padding="3px 40px"/>
</region>
<region xml:id="r3">
<style tts:extent="306px 114px"/>
<style tts:backgroundColor="red"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:padding="3px 40px"/>
<set begin="50s" dur="1s" tts:opacity="1.00"/>
<set begin="54s" dur="1s" tts:opacity="0.75"/>
<set begin="57s" dur="1s" tts:opacity="0.50"/>
<set begin="59s" dur="1s" tts:opacity="0.25"/>
</region>
<region xml:id="r4">
<set dur="1s" tts:origin=" 8c 14c"/>
<set dur="1s" tts:origin=" 2c 2c"/>
<set dur="1s" tts:origin=" 8c 14c"/>
<set dur="1s" tts:origin="14c 4c"/>
<set dur="1s" tts:origin=" 8c 14c"/>
<style tts:extent="24c 2c"/>
<style tts:backgroundColor="red"/>
<style tts:color="white"/>
<style tts:displayAlign="after"/>
<style tts:padding="3px 40px"/>
</region>
</layout>
</head>
<body style="s0">
<div>
<p begin="00:00:06:15" id="p0" end="00:00:08:00">Lve Nikolajeviči,</p>
<p region="r1" begin="00:00:08:03" id="p1" end="00:00:11:17">napadlo vás někdy,<br />že nemáme pohlavní orgány?</p>
<p region="r2" begin="00:00:15:10" id="p2" end="00:00:18:05">Je to zvláštní,<br />Jevgeniji Pavloviči,</p>
<p region="r1" begin="00:00:18:08" id="p3" end="00:00:22:18">mluvil jsem o tom včera s knížetem<br />Vasilijem Maximem Leonovičem.</p>
<p region="r1" begin="00:00:22:21" id="p4" end="00:00:24:02">Byl mrzutý.</p>
<p region="r1" begin="00:00:24:15" id="p5" end="00:00:26:04">Došli jsme k závěru,</p>
<p region="r1" begin="00:00:26:07" id="p6" end="00:00:29:03">že nemáme<br />a že nebudeme mít ani potomky.</p>
<p region="r1" begin="00:00:29:23" id="p7" end="00:00:32:22">Možná je to nevhodné téma, ale,</p>
<p region="r1" begin="00:00:33:01" id="p8" end="00:00:36:22">Lve Nikolajeviči,<br />představte si, kdybychom je měli.</p>
<p region="r1" begin="00:00:37:01" id="p9" end="00:00:39:07">Mohli bychom se množit!</p>
<p region="r1" begin="00:00:42:15" id="p10" end="00:00:45:14">Soňa Jepančinová<br />mi poslal psaní.</p>
<p region="r4" begin="00:00:45:17" id="p11" end="00:00:49:07">Je v tom přesně to,<br />co říkáte. Ach!</p>
<p region="r3" begin="00:00:50:14" id="p12" end="00:00:54:01">-Co jste jí odpověděl?<br />-Napsal jsem jí báseň.</p>
<p region="r3" begin="00:00:54:10" id="p13" end="00:00:57:12">Soňo! Má drahá rozmilá!</p>
<p region="r3" begin="00:00:57:15" id="p14" end="00:00:59:20">Dítě jste mi nepovila.</p>
<p region="r3" begin="00:00:59:23" id="p15" end="00:01:02:20">Dobře totiž vím, že nemáte čím.</p>
</div>
</body>
</tt>
Použití podmiňovacího způsobu v popisu předchozího příkladu není zvoleno náhodou. Oproti formátu WebVTT je podpora formátu TTML v jednotlivých prohlížečích tristní, v podstatě nulová, a pravděpodobně nebude díky příklonu k WebVTT v blízké době lepší. Je tedy obtížné titulky jednoduše vyzkoušet. Na straně tvorby je podpora také velmi malá (pouze tradičně nezklame editor SubtitleEdit – hloubku implementace formátu nicméně neznám). Základní podporu formátu TTML deklaruje Youtube. Vyzkoušet si podporu vašeho prohlížeče můžete zde:
Pro další poznání formátu TTML doporučuji si pročíst specifikaci a trochu googlovat. Pokud něco objevíte, napište do komentářů.