Synchronized Accessible Media Interchange
Субтитри 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> <P Class=ENCC>
- 1 · Заголовок
Таблиця стилів: клас для кожної мови з її
langі назвоюName, яку показують програвачі. Перший клас — мова, з якої починають програвачі. - 2 · Синхронізація
Момент у мілісекундах від початку відео.
- 3 · Субтитри
Абзац для кожної мови. Кожен триває до наступної синхронізації, яка має абзац у своєму класі;
його очищає.
Час
Синхронізація має лише початок. Субтитр закінчується, коли починається наступний субтитр його мови або порожній, тож кожна пауза потребує власної синхронізації.
Закривні теги необов’язкові. Зразок 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
- Текст кожного субтитра і розриви рядків
- Курсив, жирний, підкреслення, перекреслення і колір
- Переклади як окремі мови
- Мовці як рядки Source
- Початок і кінець з точністю до мілісекунди, у порядку
- Місце субтитра на кадрі: у SAMI для нього немає місця
- Шрифти, розміри і відступи
- Читання ruby
- Озвучення, обличчя мовців і кольори
Збережіть проєкт .usfx, щоб зберегти те, що належить Subtitld.
Відкриття файлу SAMI
Subtitld відкриває .smi і .sami та:
- читає SAMI так, як браузери читають HTML: теги великими літерами чи ні, закриті чи ні, атрибути в лапках чи без, синхронізації не за порядком, текст поза абзацом;
- бере кожну мову: першу — як мову субтитрів, інші — як їхні переклади;
- зберігає курсив, жирний, підкреслення, перекреслення і колір, як із тегів, так і з таблиці стилів;
- бере рядки Source як мовців, готових для озвучення;
- завершує останній субтитр там, де
Metricsфайлу каже, що закінчується відео, або через чотири секунди; - декодує будь-яке кодування, зокрема CP949.
Експорт SAMI
Експорт, потім Субтитри і 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 — ні), так само як більшість програвачів.
Цікаві факти
Microsoft випустив SAMI влітку 1998 року як частину своєї роботи з доступності: субтитри на ПК для людей, які є глухими або мають порушення слуху.
Специфікація Microsoft очищає субтитр нерозривним пробілом. FFmpeg відкидає будь-яку синхронізацію, яка його містить, тож там, де йде інша мова, Subtitld записує порожній абзац.
Багато корейських файлів називають клас за країною, а не за мовою: KRCC, тоді як у прикладах Microsoft є ENUSCC.
Пов'язані формати
Відкрийте його в Subtitld разом із відео та вирівняйте за хвилею.