Перейти к основному содержимому
SubtitleMatrix

Формат субтитров VTT

Что умеет этот формат

Оформление текста
Жирный и курсив
Положение на экране
Нет
Тайминг караоке
Нет
Переносы строк внутри реплики
Да
Таймлайн
Начало и конец для каждой реплики
Точность тайминга
1 мс
Тайминг хранится в номерах кадров
Нет
Текст справа налево
Да

Примеры

Типичный файл VTT и то, что сайт из него читает

Файл

WEBVTT

intro
00:00:01.000 --> 00:00:04.000
Hello there.

00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.

Что в нём

2 cues, 2 lines of text

  00:00:01.000 → 00:00:04.000
    Hello there.
  00:00:04.500 → 00:00:08.000
    Second line with italics.   [italic ×1]
    [settings align:start position:10%]

Outside the cues:
  header     "WEBVTT"

Правая колонка — не результат конвертации, а то, что сайт извлекает из левого файла: реплики, интервалы, оформление и всё, что осталось за пределами реплик.

Неаккуратный файл VTT: что всё равно читается

Файл

WEBVTT - boundary sample

NOTE a comment
spanning two lines

STYLE
::cue { color: red }

REGION
id:fred
width:40%

00:01.000 --> 00:03.000
Hours-less timecode with <b>bold</b> and <v Roger>a voice tag.

00:05.000 --> 00:04.000
End before start.

NOTE between cues

00:07.000 --> 00:09.000
&nbsp; entities stay literal.

00:10.000 --> oops
Unreadable end time.

NOTE trailing

Что в нём

3 cues, 3 lines of text

  00:00:01.000 → 00:00:03.000
    Hours-less timecode with bold and <v Roger>a voice tag.   [bold ×1]
  00:00:05.000 → 00:00:05.001
    End before start.
  00:00:07.000 → 00:00:09.000
    &nbsp; entities stay literal.

Outside the cues:
  header     "WEBVTT - boundary sample"
  blocks     NOTE ×3, STYLE, REGION

Reported while reading — repaired or skipped, never silently:
  1 × blocks that were neither a cue nor a NOTE/STYLE/REGION block (they were skipped)
  1 × cues whose end time was not after their start time (they were given a 1ms duration)

Второй файл намеренно неаккуратный: BOM, смешанные переводы строк и пустые поля. Сайт всё равно дочитывает его до конца, а пропущенные фрагменты перечисляет в отчёте.

Конвертировать WebVTT (VTT) в другой формат

Каждая страница работает целиком в вашем браузере. Подписи говорят, чего стоит это направление, ещё до того, как вы его откроете.

Конвертация в этот формат

VTT — веб-формат субтитров с обязательной строкой WEBVTT в начале файла. Внутри файла — заголовок WEBVTT, необязательное имя реплики, строка таймкода с настройками и строки текста; время записывается как 00:00:01.000, то есть миллисекунды отделены точкой, а часы, минуты и секунды — двоеточиями.

VTT поддерживает жирный, курсив и подчёркивание, а также настройки реплики вроде align: и position:, но произвольных координат не хранит. Сервер не участвует: файл читается и записывается на вашем устройстве, а результаты скачиваются архивом.

Частые вопросы

Что хранит VTT помимо текста реплик?

Структура VTT: заголовок WEBVTT, необязательное имя реплики, строка таймкода с настройками и строки текста. Дополнительно: блоки NOTE, STYLE и REGION, а также настройки отдельной реплики вроде align: и position:. Оформление — базовое оформление: жирный, курсив, подчёркивание и классы.

Как VTT записывает начало и конец реплики?

VTT пишет время как 00:00:01.000 (миллисекунды отделены точкой, а часы, минуты и секунды — двоеточиями). Полный интервал выглядит так: 00:00:01.000 → 00:00:03.500.

Насколько богатое оформление поддерживает VTT?

Оформление VTT — базовое оформление: жирный, курсив, подчёркивание и классы. Сильнее всего это заметно при сравнении с ASS: там есть шрифт, цвет, обводка, тень и караоке, а VTT такие поля либо не хранит, либо записывает упрощённо.

Что теряется при переводе VTT в более простой формат?

При переводе VTT в SRT теряются базовое начертание и служебные блоки NOTE, STYLE и REGION; в ASS то же самое происходит с настройками реплики, которым там нет прямого соответствия.

Можно ли перевести VTT в другие форматы в браузере?

Да: на сайте открыто 11 направлений перевода из VTT — в SRT, ASS, SSA, SBV, SMI, LRC, MicroDVD, TTML, JSON, TXT, CSV. Файл разбирается и записывается в текущей вкладке, не отправляется на сервер, а пакет можно скачать одним архивом.

Как VTT читает повреждённый файл?

VTT требует строку WEBVTT в начале, но прощает BOM, лишние пустые строки и реплики без текста; блоки без читаемого таймкода пропускаются с записью в отчёт.