menu
logo o.titulkování.cz o.titulkování.cz
informační web o tvorbě titulků

blog

blog
Procházíte téma:
vše (15)
← novější (6) | starší (8) →
 

Formát TTML

téma: formáty titulků
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:

www.titulkovani.cz/ttml

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ářů.

Specifikace formátu TTML
Příspěvek na téma WebVTT vs. TTML