Конвертер VTT в SMI
Или вставьте текст субтитров
Что меняет эта конвертация
1 пункт теряется или требует решения
- Содержимое формата
содержимое, которое исходный формат хранит вне реплик (блоки не-реплик, текст заголовка, настройки реплик, закомментированные события): целевому формату его некуда деть
Этот список выведен из матрицы возможностей этих двух форматов, а не из загруженного файла. Конкретный файл может потерять больше, если использует возможности, которые формат допускает, а матрица не моделирует.
VTT — веб-формат субтитров с обязательной строкой WEBVTT в начале файла, а SMI — формат Microsoft на разметке, где каждая реплика начинается тегом SYNC; эта страница переводит файл из одного формата в другой. VTT записывает интервал (00:00:01.000 → 00:00:03.500), а SMI ставит только <SYNC Start=1000>: конец реплики задаёт следующий тег SYNC. Обе шкалы миллисекундные, поэтому значения времени переносятся без округления.
Сайт перечисляет потери до запуска — служебные блоки VTT; VTT хранит вне реплик блоки NOTE, STYLE и REGION и настройки align: и position:, а в SMI для них нет места.
Файлы разбираются локально в браузере и не отправляются на сервер; очередь можно остановить, а результаты скачать одним архивом.
Примеры
Обычный файл VTT, переведённый в SMI
Вход
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>.
Выход
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there.
<SYNC Start=4000>
<P>
<SYNC Start=4500>
<P>Second line with <i>italics</i>.
<SYNC Start=8000>
<P>
</BODY>
</SAMI>
Сравните две стороны: VTT хранит полный интервал, а SMI ставит только <SYNC Start=1000>; конец реплики задаёт следующий блок, текст сохраняется.
Тот же перевод на неаккуратном файле VTT
Вход
a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.
Выход
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>No header, two lines before the timecode.
<SYNC Start=2000>
<P>
</BODY>
</SAMI>
Второй файл проверяет граничные случаи. VTT читает его без падения, а SMI записывается заново, поэтому часть дефектов исчезает, но пропущенные блоки не возвращаются.
Частые вопросы
Что происходит с отметками времени при конвертации VTT в SMI?
VTT записывает интервал (00:00:01.000 → 00:00:03.500), а SMI ставит только <SYNC Start=1000>: конец реплики задаёт следующий тег SYNC. Обе шкалы миллисекундные, поэтому значения времени переносятся без округления.
Что исчезнет из файла, если сохранить VTT как SMI?
VTT хранит вне реплик блоки NOTE, STYLE и REGION и настройки align: и position:, а в SMI для них нет места. Это полный список потерь для пары VTT → SMI; сайт показывает его до запуска.
Почему в SMI после каждой реплики появляется очищающий блок при переводе VTT в SMI?
SMI не хранит конец реплики: она длится до следующего тега SYNC. Поэтому при переводе VTT в SMI сайт ставит SYNC Start с миллисекундами и добавляет очищающий блок в момент окончания реплики, иначе текст висел бы до следующей.
Что произойдёт с многострочными репликами VTT в файле SMI?
Оба формата хранят жёсткий перенос внутри реплики, поэтому две строки VTT останутся двумя строками в SMI; порядок реплик не меняется.
В какой кодировке сохраняется SMI и какое у него расширение при переводе из VTT?
Файл SMI записывается в UTF-8 без BOM с переводами строк LF и расширением .smi; при чтении VTT сайт сам определяет BOM и стиль переводов строк и нормализует их. Кириллица и другие алфавиты сохраняются без замены символов.
Что происходит с блоками NOTE и STYLE из VTT при переводе в SMI?
VTT хранит вне реплик блоки NOTE, STYLE и REGION и настройки вроде align: и position:. В SMI для них нет места, поэтому они теряются; остаются текст, интервалы и базовое начертание, если SMI его поддерживает.