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

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

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

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

Примеры

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

Файл

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Что в нём

2 cues, 3 lines of text

  Start=1000  =  00:00:01.000 → 00:00:03.000
    Hello there.
    [Class=ENCC]
  Start=3500  =  00:00:03.500 → 00:00:06.000
    How are you?
    Fine, thanks.
    [Class=ENCC]

Outside the cues:
  head       a <STYLE> block with CSS for the paragraphs, kept as it came in
  cue ends   the next <SYNC> tag — a SAMI file writes no end time of its own
  clearing   a <P>&nbsp; block blanks the screen; the two here are kept as clearing blocks, not turned into cues

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

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

Файл

<SAMI>
<BODY>
<SYNC Start=abc>
<P Class=ENCC>this block's start cannot be read
<SYNC Start=2000>
<SYNC Start=4000>
<P>no attributes here<br>second line
<SYNC Start="6000">
some loose text before any P
</BODY>
</SAMI>

Что в нём

3 cues, 3 lines of text

  Start=2000  =  00:00:02.000 → 00:00:04.000
    (no text)
  Start=4000  =  00:00:04.000 → 00:00:06.000
    no attributes here
    second line
  Start=6000  =  00:00:06.000 → 00:00:08.000
    some loose text before any P

Outside the cues:
  head       no <STYLE> block and no <TITLE> — just the <SAMI> and <BODY> tags
  cue ends   the next <SYNC> tag; the last cue has none after it, so its end time was given a default
  loose text text between two <SYNC> tags that belongs to no <P> is kept and attached to the cue open at that point

Reported while reading — repaired or skipped, never silently:
  1 × SYNC blocks whose start time could not be read (they were skipped)
  1 × the last cue has no following timestamp, so its end time was generated

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

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

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

SMI → CSV в браузере. Потери: стили, позиции, поля формата.
  • Оформление
  • Позиционирование
  • Содержимое формата
SMI → LRC в браузере. Потери: тайминг, стили, позиции, точность, поля формата.
  • Тайминг
  • Оформление
  • Позиционирование
  • Точность
  • Содержимое формата
SMI → MICRODVD в браузере. Потери: стили, позиции, fps, поля формата.
  • Оформление
  • Позиционирование
  • Частота кадров
  • Содержимое формата
SMI → SBV в браузере. Потери: стили, позиции, поля формата.
  • Оформление
  • Позиционирование
  • Содержимое формата
SMI → SRT в браузере. Потери: стили, позиции, поля формата.
  • Оформление
  • Позиционирование
  • Содержимое формата
SMI → TXT в браузере. Потери: тайминг, стили, позиции, переносы, поля формата.
  • Тайминг
  • Оформление
  • Позиционирование
  • Переносы строк
  • Содержимое формата

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

SMI — формат Microsoft на разметке, где каждая реплика начинается тегом SYNC. Внутри файла — разметка с блоком STYLE и цепочкой тегов SYNC Start, где текст лежит в абзацах P; время записывается как <SYNC Start=1000>, то есть целые миллисекунды в атрибуте Start, а конца у реплики нет.

SMI хранит базовое оформление через CSS-классы, а конец реплики задаётся следующим тегом SYNC; отдельного поля конца в формате нет. Файлы обрабатываются в браузере и не отправляются на сервер; пакет можно скачать одним архивом.

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

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

Структура SMI: разметка с блоком STYLE и цепочкой тегов SYNC Start, где текст лежит в абзацах P. Дополнительно: блок STYLE с CSS и атрибуты абзаца вроде Class=ENCC. Оформление — базовое оформление через CSS-классы и атрибуты абзаца.

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

SMI пишет время как <SYNC Start=1000> (целые миллисекунды в атрибуте Start, а конца у реплики нет). Полный интервал выглядит так: <SYNC Start=1000> … <SYNC Start=3500>.

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

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

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

При переводе SMI в SRT или TXT теряются CSS-оформление и очищающие блоки; в TTML и JSON остаётся больше, но классы абзацев всё равно не переносятся напрямую.

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

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

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

SMI читается как разметка: незакрытые теги и пропущенные SYNC не роняют разбор, а блоки без текста превращаются в очищающие абзацы.