Timed Text Markup Language

ВідкритиЗберегтиXMLЗі стилями

XML від W3C для субтитрів і титрів, якого вимагають мовники та стрімінгові сервіси. DFXP було назвою його першого профілю, і багато файлів досі її несуть. IMSC, EBU-TT-D і iTT від Apple — це теж TTML, кожен зі своїми звичками.

Коротко

Розширення.ttml
Тип медіаapplication/ttml+xml
СпецифікаціяW3C, Timed Text Markup Language 1 (TTML1), рекомендація. TTML2 його розширює; IMSC і EBU-TT-D — підмножини для розповсюдження.
Точність часуДовільна: частки секунди, кадри або такти
Кодування текстуВказується в XML. Майже завжди UTF-8.
СтилізаціяІменовані стилі та атрибути tts:: шрифт, розмір, колір, фон, курсив, жирний, підкреслення, перекреслення, контур
РозташуванняРегіони: рамки, розміщені й розмірені будь-де на кадрі
МовціАгенти (ttm:agent), названі в заголовку
У контейнерахMP4 як stpp (ISO/IEC 14496-30), у потоках DASH, CMAF і HLS

Будова файлу

Це XML-документ: заголовок, який називає стилі та регіони екрана, і тіло з абзацами, по одному на кожен субтитр.

<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 · Корінь

    <tt> із просторами назв TTML, мовою і годинником, яким відлічується час: ttp:frameRate, ttp:tickRate.

  2. 2 · Заголовок

    Іменовані стилі, регіони екрана і те, хто говорить.

  3. 3 · Час

    begin кожного абзацу і його end або dur.

  4. 4 · Текст

    Сам субтитр. Фрагменти можуть мати власні стилі, а <br/> розриває рядок.

Час

TTML записує час більше способами, ніж будь-який інший формат субтитрів:

Запис Що це
00:00:23.500 Години, хвилини, секунди і дробова частина
00:00:23:12 Кадри після секунд: дванадцятий при ttp:frameRate файлу
23.5s, 23500ms, 1h Зсув у годинах, хвилинах, секундах або мілісекундах
564f Кадри
235000000t Такти, ttp:tickRate на секунду

Час відлічується від того, що його містить. begin абзацу відлічується від початку свого <div> і <body>, а абзац без власного кінця завершується разом із ними.

Стилі

Стиль — це набір атрибутів tts:. Текст бере їх у певному порядку: спочатку з регіону, потім з тіла, div, абзацу і фрагмента навколо нього. Кожен елемент бере стилі, названі в ньому (style="s1 s2", а також ті, на які вони посилаються), а потім власні атрибути.

Атрибут Ефект У Subtitld
tts:fontStyle="italic" Курсив Зберігається
tts:fontWeight="bold" Жирний Зберігається
tts:textDecoration="underline", "lineThrough" Підкреслення, перекреслення Зберігаються
tts:color Колір тексту: назва, #rrggbb, #rrggbbaa або rgb() Зберігається без прозорості
tts:displayAlign, tts:textAlign Де текст стоїть у своєму регіоні Зберігається як одна з дев’яти позицій
tts:fontFamily, tts:fontSize Шрифт і розмір Не зберігаються
tts:backgroundColor, tts:textOutline Рамка під текстом, контур Не зберігаються
<set> Стиль, що змінюється з часом Не зберігається

Регіони

Регіон — це рамка на кадрі, розташована через tts:origin і розмірена через tts:extent. Усередині неї tts:displayAlign ставить текст угорі, посередині або внизу (before, center, after), а tts:textAlign — збоку або по центру.

<region xml:id="top"
        tts:origin="10% 10%"
        tts:extent="80% 80%"
        tts:displayAlign="before"/>

Subtitld визначає, де опиниться текст, незалежно від того, чи виміряно регіон у відсотках, пікселях чи клітинках, і вибирає найближчу з дев’яти позицій, які в SubRip позначають {\an1}–{\an9}. Під час запису кожна використана позиція є регіоном з відповідною назвою: bottom, top, top-left…

Коли файл нічого не каже. Власні типові значення TTML ставлять текст угорі ліворуч у його регіоні, але програвачі показують його внизу по центру, і Subtitld робить так само. Він також читає textAlign="start" у регіоні без розміру чи положення як центрування: файли, записані через pycaption, зокрема старіші версії Subtitld, ставлять це на кожен регіон.

Профілі

Більшість TTML написано за профілем: підмножиною мови з власними правилами. Subtitld читає кожен із них як TTML.

Профіль Де використовується Його звички
DFXP Перший профіль TTML і розширення .dfxp Старіші файли з простором назв http://www.w3.org/2006/10/ttaf1
IMSC 1 Стрімінг через DASH, CMAF і HLS Профіль W3C для субтитрів і титрів онлайн
EBU‑TT‑D Онлайн-плеєри європейських мовників Елементи часто з префіксом: <tt:p>
SMPTE‑TT Онлайн-титри американського телебачення Доповнення SMPTE для титрів, перенесених з ефіру
iTT (.itt) Поставки в iTunes Store та на Apple TV Час у кадрах (ttp:timeBase="smpte")

TTML у Subtitld

Зберігається в .ttml
  • Текст кожного субтитра і розриви рядків
  • Курсив, жирний, підкреслення, перекреслення і колір
  • Місце на екрані
  • Мовці як агенти
  • Початок і кінець з точністю до мілісекунди, у порядку
Немає куди подіти
  • Шрифти, розміри, фони і контури по рядках
  • Точний розмір і місце регіону
  • Стилі, що змінюються з часом, ruby, субтитри-зображення
  • Переклади поруч з оригіналом, озвучення, обличчя мовців

Збережіть проєкт .usfx, щоб зберегти те, що належить Subtitld.

Відкриття файлу TTML

Subtitld відкриває .ttml, .dfxp, .itt і .xml та:

  • читає TTML, як би він не був записаний: у своєму просторі назв, у старому просторі DFXP або з tt: перед кожним елементом;
  • читає всі форми часу, кожна відлічується від div і body, у яких вона міститься;
  • враховує стилі так, як їх застосовує TTML, зберігаючи курсив, жирний, підкреслення, перекреслення і будь-який колір, крім білого;
  • ставить кожен субтитр туди, де його показує його регіон;
  • бере агентів як мовців, готових для озвучення, а xml:lang файлу — як мову проєкту;
  • читає кодування, яке оголошує файл, і HTML-сутності, як-от &nbsp;.

Файл, який не є коректним XML, відкривається з повідомленням, що вказує рядок і стовпець. Файл, який взагалі не є TTML, про це повідомляє.

Експорт TTML

Діалог експорту Subtitld з вибраним TTML і мовцями, записаними як агенти

Експорт, потім Субтитри і TTML або DFXP, пропонує:

  • ТекстОригінал, переклад або обидва, переклад нижче.
  • Імена мовцівНе вказувати, перед текстом (Thom: …) або як агенти (ttm:agent), власний спосіб TTML.
  • ФорматуванняЗберегти або прибрати.
  • Зсув часуКожен субтитр раніше або пізніше на однакову величину.
  • ВиглядБілий із чорним контуром або такий, як малює перегляд Subtitld: його шрифт, колір і напівпрозора рамка.

Файл — це TTML 1 в UTF-8. Час записується як 00:00:23.000, кожне місце субтитрів — як регіон, форматування — як span, а розриви рядків — як <br/>. Його xml:lang — мова тексту, який він містить. TTML і DFXP отримують той самий файл; відрізняється лише розширення.

TTML чи WebVTT?

WebVTT — для <track> на веб-сторінці: браузери читають його самі. TTML — для мовників, для стрімінгових сервісів, які його вимагають, і для програвачів, що його читають, як-от dash.js і Shaka Player. Решту розповідає сторінка WebVTT.

Цікаві факти

2010

TTML 1.0 став рекомендацією W3C у листопаді 2010 року, після чернеток, названих за його першим профілем: Distribution Format Exchange Profile, DFXP.

ttaf1

Старий простір назв http://www.w3.org/2006/10/ttaf1 походить із чернеток 2006 року, коли TTML був Timed Text Authoring Format. Файли його досі містять.

Emmy

У 2016 році W3C отримав премію Technology & Engineering Emmy за TTML, поруч із HBO, Netflix, Telestream і SMPTE.

Пов'язані формати

Маєте .ttml для виправлення?

Відкрийте його в Subtitld разом із відео та вирівняйте за хвилею.

Завантажити Subtitld