Synchronized Accessible Media Interchange

ОткрытьСохранитьHTMLМногоязычный

Субтитры Microsoft для Windows Media Player с 1998 года: HTML с меткой синхронизации перед каждым субтитром и таблицей стилей, где классы — это языки, так что один файл может содержать несколько языков. Редко встречается в других местах, но в Корее по-прежнему остаётся обычным файлом субтитров.

Коротко

Расширение.smi
Тип медиаНе зарегистрирован
СпецификацияMicrosoft, Understanding SAMI 1.0 (2001, обновлена в 2003). Открытая, без лицензионных отчислений.
Точность времениМиллисекунды
Кодировка текстаНе указывается. Старые корейские файлы в основном в CP949, новые — в UTF-8; Subtitld определяет любую из них.
ОформлениеВстроенные теги HTML и CSS: курсив, полужирный, подчёркивание, зачёркивание, цвет, шрифты
ПоложениеНа картинке не задаётся: субтитры показываются в собственной области
ГоворящиеСтрока Source (ID=Source), показываемая над субтитром
ЯзыкиНесколько в одном файле, по одному CSS-классу на каждый
В контейнерахНет. Отдельный файл рядом с видео, с тем же именем.

Строение файла

HTML-документ: таблица стилей, где названы языки, а затем метка синхронизации для каждого момента, когда меняются субтитры.

<SAMI><HEAD><STYLE><!--
.KRCC {lang:ko-KR;}
.ENCC {lang:en-US;}
--></STYLE></HEAD><BODY>
<SYNC Start=23000>
<P Class=KRCC>넌 정말 못됐어.
<P Class=ENCC>You're a jerk.
<SYNC Start=24500>
<P Class=KRCC>&nbsp;
<P Class=ENCC>&nbsp;
  1. 1 · Заголовок

    Таблица стилей: класс для каждого языка с его lang и Name, который показывают плееры. Первый класс — язык, с которого начинают плееры.

  2. 2 · Синхронизация

    Момент в миллисекундах от начала видео.

  3. 3 · Субтитры

    Абзац для каждого языка. Он остаётся на экране до следующей синхронизации, в которой есть абзац того же класса; &nbsp; его очищает.

Тайминг

У синхронизации есть только начало. Субтитр заканчивается, когда начинается следующий субтитр на том же языке или пустой, поэтому каждая пауза требует собственной синхронизации.

Закрывающие теги необязательны. В собственном примере Microsoft не закрыты ни <P>, ни <SYNC>, и плееры читают его в любом случае. Windows Media Player может требовать теги заглавными буквами, как в примере.

Стили

Текст SAMI — это HTML, таблица стилей — CSS. Субтитр берёт стиль P, затем стиль своего класса, затем собственный атрибут style, затем теги внутри него.

Запись Эффект В Subtitld
<I>, <EM> Курсив Сохраняется
<B>, <STRONG> Полужирный Сохраняется
<U>, <S>, <STRIKE> Подчёркивание, зачёркивание Сохраняется
<FONT color="#FFD700"> Цвет текста Сохраняется
color, font-style, font-weight, text-decoration То же, из таблицы стилей или style Сохраняется
<BR> Перенос строки Сохраняется
<FONT face>, font-size, margin Шрифт, размер, интервал Не сохраняется
<RUBY>…<RT> Чтение над текстом Текст сохраняется, чтение — нет

Языки

Каждый класс — это язык. Плееры предлагают их по Name, показывают первый определённый, пока не сказано иное, и показывают абзац без класса на любом языке. Корейский файл может содержать английский рядом с корейским, а выбирает зритель.

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

Говорящие

<SYNC Start=23000>
<P Class=ENCC ID=Source>Celia
<P Class=ENCC>You're a jerk.

Абзац с ID=Source — не субтитр. Он называет говорящего строкой над субтитром и остаётся, пока его не заменит другой. Subtitld читает его как говорящего каждого субтитра, над которым он стоит, и записывает говорящих так, когда это запрошено.

Плееры здесь различаются. FFmpeg и построенные на нём плееры показывают строку Source курсивом над субтитром. MPlayer вписывает её в первую строку субтитра. Имена перед текстом (Celia: …) читаются одинаково везде.

SAMI в Subtitld

Сохраняется в .smi
  • Текст каждого субтитра и переносы строк
  • Курсив, полужирный, подчёркивание, зачёркивание и цвет
  • Переводы как отдельные языки
  • Говорящие, как строки Source
  • Начало и конец с точностью до миллисекунды, по порядку
Некуда записать
  • Где стоит субтитр: в SAMI нет места на картинке
  • Шрифты, размеры и поля
  • Чтения руби
  • Озвучка, лица и цвета говорящих

Сохраните проект .usfx, чтобы сохранить то, что относится к Subtitld.

Открытие файла SAMI

Subtitld открывает .smi и .sami, и:

  • читает SAMI так, как браузеры читают HTML: теги заглавными или строчными, закрытыми или нет, атрибуты в кавычках или без, синхронизации не по порядку, текст вне абзаца;
  • берёт каждый язык: первый — как язык субтитров, остальные — как переводы;
  • сохраняет курсив, полужирный, подчёркивание, зачёркивание и цвет из тегов и таблицы стилей;
  • принимает строки Source за говорящих, готовых к озвучке;
  • заканчивает последний субтитр там, где по Metrics файла заканчивается видео, или через четыре секунды;
  • декодирует любую кодировку, в том числе CP949.

Экспорт SAMI

Диалог экспорта Subtitld с выбранным SAMI: оригинал и перевод как два языка, говорящие как строки Source, кодировка CP949

Экспорт, затем Субтитры и SAMI, предлагает:

  • ТекстОригинал, перевод или оба варианта как два языка.
  • Имена говорящихНе выводятся, ставятся перед текстом (Thom: …) или записываются как строки Source, собственным способом SAMI.
  • ОформлениеСохраняется или удаляется.
  • Сдвиг времениВсе субтитры смещаются раньше или позже на одну и ту же величину.
  • КодировкаUTF-8 с меткой порядка байтов или без неё, UTF-16, Windows-1252 или CP949 для старых корейских плееров.
  • Окончания строкLinux и macOS или Windows.

Файл — SAMI 1.0 в том виде, как его пишет пример Microsoft: теги заглавными, класс для каждого языка, синхронизация там, где начинается субтитр, и пустая там, где он заканчивается, а оформление — как <I>, <B>, <U>, <S> и <FONT color>.

Назовите файл, как видео: tears-of-steel.smi рядом с tears-of-steel.mp4. Windows Media Player находит .smi именно так (.sami — нет), и большинство плееров тоже.

Интересные факты

1998

Microsoft выпустила SAMI летом 1998 года в рамках работы над доступностью: субтитры на ПК для глухих и слабослышащих.

&nbsp;

Спецификация Microsoft очищает субтитр неразрывным пробелом. FFmpeg отбрасывает любую синхронизацию, которая его содержит, поэтому там, где продолжается другой язык, Subtitld записывает пустой абзац.

KRCC

Многие корейские файлы называют класс по стране, а не по языку: KRCC, тогда как в примерах Microsoft стоит ENUSCC.

Похожие форматы

Нужно исправить файл .smi?

Откройте его в Subtitld вместе с видео и поправьте тайминг по осциллограмме.

Скачать Subtitld