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

Конвертер SRT в SMI

Или вставьте текст субтитров

Что меняет эта конвертация

В этом направлении ничего не теряется — у каждой возможности исходного формата есть куда перейти в целевом.

Этот список выведен из матрицы возможностей этих двух форматов, а не из загруженного файла. Конкретный файл может потерять больше, если использует возможности, которые формат допускает, а матрица не моделирует.

Перевод SRT в SMI меняет не содержание, а способ записи: SRT — самый распространённый формат субтитров, который читают почти все плееры и видеоредакторы, SMI — формат Microsoft на разметке, где каждая реплика начинается тегом SYNC. SRT записывает интервал (00:00:01,000 → 00:00:03,500), а SMI ставит только <SYNC Start=1000>: конец реплики задаёт следующий тег SYNC. Обе шкалы миллисекундные, поэтому значения времени переносятся без округления.

В этом направлении ничего не теряется: позиционирования в SRT нет, караоке в исходнике отсутствует, полный интервал и многострочный текст SMI хранит, а SRT не содержит ничего, чего SMI не умел бы.

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

Примеры

Обычный файл SRT, переведённый в SMI

Вход

1
00:00:01,000 --> 00:00:03,500
Hello there.

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

Выход

<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=3500>
<P>&nbsp;
<SYNC Start=3500>
<P><i>Whispering</i> now.<br>And a second line.
<SYNC Start=6000>
<P>&nbsp;
<SYNC Start=6000>
<P><b>Bold</b> statement.
<SYNC Start=9250>
<P>&nbsp;
</BODY>
</SAMI>

Сравните две стороны: SRT хранит полный интервал, а SMI ставит только <SYNC Start=1000>; конец реплики задаёт следующий блок, текст сохраняется.

Тот же перевод на неаккуратном файле SRT

Вход

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
Last one.

Выход

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P><b>Bold</b> and <i>italic</i>.
<SYNC Start=3500>
<P>&nbsp;
<SYNC Start=3500>

<SYNC Start=6000>
<P>&nbsp;
<SYNC Start=8000>
<P>Last one.
<SYNC Start=9000>
<P>&nbsp;
</BODY>
</SAMI>

Второй файл намеренно неровный: BOM, переводы строк CRLF, лишние пустые строки. SRT читает его без падения, а SMI записывается заново, поэтому часть дефектов исчезает, но пропущенные блоки не возвращаются.

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

Сохранится ли точность таймкода SRT в файле SMI?

SRT записывает интервал (00:00:01,000 → 00:00:03,500), а SMI ставит только <SYNC Start=1000>: конец реплики задаёт следующий тег SYNC. Обе шкалы миллисекундные, поэтому значения времени переносятся без округления.

Что именно теряется при конвертации SRT в SMI?

Ничего: позиционирования в SRT нет, караоке в исходнике отсутствует, полный интервал и многострочный текст SMI хранит, а SRT не содержит ничего, чего SMI не умел бы. Текст, интервалы и порядок реплик переносятся один в один, а различие остаётся только в синтаксисе SRT и SMI.

Что будет с тегами курсива и жирного при переводе SRT в SMI?

SRT не имеет официальных стилей, но на практике хранит жирный, курсив и подчёркивание, а сайт дополнительно пишет цвет и позицию. SMI сохраняет жирный и курсив, но цвет и позицию не переносит.

Сохранятся ли переносы строк и порядок реплик при переводе SRT в SMI?

Оба формата хранят жёсткий перенос внутри реплики, поэтому две строки SRT останутся двумя строками в SMI; порядок реплик не меняется.

В какой кодировке сохраняется SMI и какое у него расширение при переводе из SRT?

Файл SMI записывается в UTF-8 без BOM с переводами строк LF и расширением .smi; при чтении SRT сайт сам определяет BOM и стиль переводов строк и нормализует их. Кириллица и другие алфавиты сохраняются без замены символов.

Почему в SMI после каждой реплики появляется очищающий блок при переводе SRT в SMI?

SMI не хранит конец реплики: она длится до следующего тега SYNC. Поэтому при переводе SRT в SMI сайт ставит SYNC Start с миллисекундами и добавляет очищающий блок в момент окончания реплики, иначе текст висел бы до следующей.

Похожие инструменты