Перейти до основного вмісту
SubtitleMatrix

Формат субтитрів TTML

Що може виразити цей формат

Оформлення тексту
Шрифти, колір, контур, тінь
Позиціювання на екрані
Так
Караоке-таймінг
Ні
Переноси рядків у репліці
Так
Таймлайн
Початок і кінець для кожної репліки
Роздільність часу
1 мс
Час зберігається як номери кадрів
Ні
Текст справа наліво
Так

Приклади

Типовий файл TTML, і що з нього читається

Файл

<?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>

Що він містить

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 position

Права колонка — не перетворений файл, а те, що сайт читає з лівої колонки й з чого починається будь-яке перетворення цього файлу.

Неохайний файл TTML, і що з нього все одно читається

Файл

<?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>

Що він містить

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)

Справжні файли приходять із BOM, переводами рядків Windows, зайвим рядком перед часом або часом, який взагалі не читається. Ніщо з цього не валить обробку: нерозпізнане потрапляє у звіт, а не зникає мовчки.

Конвертувати TTML (Timed Text) в інший формат

Кожен із них працює повністю у вашому браузері. Позначки кажуть, чого коштує цей напрямок, ще до того, як ви його відкриєте.

TTML → MicroDVD — втрати: стилі, позиціювання, fps, дані формату.
  • Оформлення
  • Позиціювання
  • Частота кадрів
  • Дані формату
TTML → TXT — втрати: таймінг, стилі, позиціювання, переноси, дані формату.
  • Таймінг
  • Оформлення
  • Позиціювання
  • Переноси рядків
  • Дані формату

Конвертація в цей формат

TTML (Timed Text) — один із дванадцяти форматів субтитрів, з якими працює цей сайт, і ця сторінка — його довідник: що формат уміє зберегти, чого не вміє і в який формат його переписати.

TTML — XML-формат мовленнєвих платформ: репліки в <p begin=… end=…>, оформлення в <style> і атрибутах tts:*, позиціювання — через <region>. Час записано з точністю до мілісекунди.

Таблиця вище — це весь перелік можливостей, без прихованих рядків. Якщо рядок каже «ні», саме це й зникне під час конвертації з TTML, і кожна сторінка перетворення нижче попереджає про це до того, як ви відкриєте файл.

Усі ці перетворення виконуються у вашому браузері. Файли нікуди не надсилаються, обліковий запис не потрібен — це важливо для матеріалів під NDA, медичних записів і матеріалів до ефіру, які ще не вийшли.

Часті запитання

Що таке файл TTML?

TTML — XML-формат мовленнєвих платформ: репліки в <p begin=… end=…>, оформлення в <style> і атрибутах tts:*, позиціювання — через <region>. Час записано з точністю до мілісекунди. Файли TTML читають мовленнєві платформи й конвеєри на кшталт Netflix.

Чи зберігає TTML оформлення?

У TTML — повне оформлення через <style> і атрибути tts:*. Це стосується саме оформлення; позиціювання й караоке — окремі виміри, і кожен із них треба перевіряти окремо.

Чи має кожна репліка TTML і початок, і кінець?

Так, обидві межі записані явно: begin=00:00:01.250, end=00:00:03.500. Це означає, що під час конвертації в інший формат тривалість не доведеться виводити з сусідніх реплік, і саме тому TTML добре підходить як джерело для перетворення.

У які формати TTML можна конвертувати без втрат?

Жоден: TTML не містить чогось такого, що інший формат зберіг би без доповнень. Кожен перехід додає або генерує час, або втрачає частину моделі, і кожна сторінка перетворення називає свою втрату окремо.

Що TTML зберігає поза репліками?

Пролог XML і блок <head> зі стилями та розміткою. Ці дані не є субтитрами в строгому сенсі, але без них файл втрачає частину змісту: саме тому під час конвертації вони потрапляють у список втрат, а не зникають мовчки.