Универсальный формат субтитров
XML-формат субтитров эпохи Matroska: именованные стили, несколько языков в одном файле и место для дополнений. Немногие плееры его взяли, но он вмещает все, что хранит Subtitld, поэтому Subtitld хранит в нем свои проекты.
Коротко
| Расширение | .usf |
|---|---|
| Тип медиа | text/xml |
| Спецификация | USF 1.1, проект CoreCodec (2010), доступен онлайн у Titlevision |
| Точность времени | Миллисекунды |
| Кодировка текста | Объявлена в XML. UTF-8, если в нем не указано иное. |
| Оформление | Именованные стили и <i>, <b>, <u> и <font> в тексте |
| Расположение | Девять мест и отступов, для стиля или текста |
| Говорящие | speaker у каждого текста |
| Языки | Несколько в одном файле, по одному блоку <subtitles> на каждый, по коду ISO 639-2 |
| В контейнерах | Matroska как S_TEXT/USF |
Анатомия файла
XML-документ: заголовок с метаданными и стилями, затем блок субтитров для каждого языка.
<USFSubtitles version="1.0"> <metadata>…</metadata> <styles>…</styles> <subtitles> <language code="por"> Portuguese (Brazil) </language> <subtitle start="00:00:01.000" stop="00:00:02.500"> <text>Olá!</text> </subtitle> </subtitles> </USFSubtitles>
- 1 · Корень
<USFSubtitles>, с версией USF, которой он следует. - 2 · Заголовок
Название, авторы и язык; именованные стили, которые могут использовать субтитры.
- 3 · Язык
Блок
<subtitles>для каждого языка, по его коду ISO 639-2. - 4 · Субтитр
Его начало, конец (или длительность) и текст.
Время
Достаточно одних секунд. 100 — это 00:01:40.000, а 1.5 — полторы секунды. Субтитр может указать duration вместо stop.
Текст
Текст USF — подмножество XHTML: теги в нижнем регистре, правильно вложенные, <br/> закрыт.
| Элемент | Действие | В Subtitld |
|---|---|---|
<i>, <b>, <u> |
Курсив, полужирный, подчеркивание | Сохраняется |
<font color="#00FF0000"> |
Цвет, а также шрифт, размер, контур или тень | Сохраняется цвет |
<br/> |
Перенос строки | Сохраняется |
<s> |
Зачеркивание: есть в списке планов USF, но не в спецификации | Записывается для зачеркивания; другие инструменты могут показать текст простым |
<karaoke>, <k t="250"/> |
Тайминг караоке | Текст сохраняется |
<image>, <shape> |
Картинки и рисунки | Не сохраняется |
Альфа идет первой и считается наоборот. Цвета USF — #AARRGGBB, где 00 непрозрачен, а FF прозрачен. #00FF0000 — сплошной красный; #FF0000 без альфы — тоже.
Стили и места
<style name="Narrator">
<fontstyle italic="yes"/>
<position alignment="TopCenter"/>
</style>
Текст использует стиль по имени, <text style="Narrator">, и берет из него шрифт, цвет, курсив, толщину и подчеркивание, а также место: одно из девяти, от TopLeft до BottomRight. Стиль с именем Default меняет вид всех субтитров, поэтому Subtitld его не пишет, и плееры сохраняют свой вид.
Языки
У каждого языка свой блок <subtitles>, названный по коду ISO 639-2: eng, fre, ger, por. Один код может обозначать несколько языков, как их знает Subtitld, поэтому Subtitld пишет в элементе и название языка, и по нему читает por как португальский Бразилии или Португалии.
<language code="por">
Portuguese (Brazil)
</language>
USF в Subtitld
Проекты Subtitld — это USF. Файл .usfx — это USF плюс то, что ему нужно рядом: видео, голоса и озвучка в одном файле.
- Текст, оформление и место каждого субтитра
- Переводы, по блоку на каждый
- Говорящие, с их цветами и, по желанию, их фотографиями
- Озвучка и ее голоса, сами клипы по желанию
- Начало и конец с точностью до миллисекунды
- Шрифты, размеры, контуры и тени строк по отдельности
- Картинки, рисунки и тайминг караоке
- Эффекты
То, что добавляет Subtitld, другие инструменты оставляют без изменений.
Открытие файла USF
Subtitld читает то, что пишет Subtitld, и то, что пишут другие инструменты:
- кодировку, которую объявляет XML;
- курсив, полужирный, подчеркивание, цвет и место именованного стиля, который использует текст;
<font>сitalic,boldилиunderline, как его пишут некоторые инструменты;durationвместо отсутствующегоstop, а времена — как одни секунды;- несколько текстов в одном субтитре как его строки;
- блок каждого языка сопоставляется с первым по времени, поэтому блоки не обязаны содержать одинаковое число субтитров;
- коды ISO 639-2 и названия языков, а также коды, которые писали старые версии Subtitld.
Файл, который не является USF, так и сообщает и ничего не открывает.
Сохранение USF
USF хранит весь проект, поэтому Экспорт, затем Субтитры и USF, спрашивает только, что положить внутрь:
- Встроить фото говорящихФото каждого говорящего в base64, в его стиле.
- Встроить аудиоклипыКлип каждой озвучки в base64, в его субтитре.
Файл в UTF-8, языки указаны по коду ISO 639-2 и названию, с названием, которое требует USF, и без стиля Default.
Любопытное
USF впервые вышел в ноябре 2002 года: проект CoreCodec как XML-альтернатива Advanced SubStation Alpha.
Последняя версия, ноябрь 2010 года. Ее спецификация все еще числит <s> среди планов.
Начиная с версии 0.9, VLC показывает текст и тайминг USF, с небольшой частью оформления, как это делает VSFilter.
Похожие форматы
-
.ttmlTimed Text Markup Language
-
.assAdvanced SubStation Alpha
-
.smiSynchronized Accessible Media Interchange
Откройте его в Subtitld вместе с видео и поправьте тайминг по осциллограмме.