yurikhan: (Default)
[personal profile] yurikhan

Среди анимешников принято смотреть аниме с оригинальной озвучкой и субтитрами, потому что все альтернативные озвучки — в лучшем случае приемлемые, в среднем — отвратительные. Поэтому время от времени встаёт задача субтитры подгонять.

Субтитры — это текстовый файл, состоящий из фраз. Каждая фраза включает в себя, по минимуму, текст, время начала и время окончания. Примерно вот так:

Dialogue: Marked=0,0:00:13.00,0:00:15.00,*Default,,0000,0000,0000,,Lorem ipsum dolor sit amet.

Соответственно, плеер при наступлении начального времени (13 секунд от начала файла) показывает текст на экране, а при наступлении конечного (15 секунд) прячет его.

Это формат программы SubStation Alpha. В настоящее время — один из самых продвинутых форматов. В частности, в нём есть понятие стиля. Стили задают форматирование — цвет, шрифт, расположение субтитров, закрепляя за каждым вариантом оформления имя.

Это всё background. А теперь проблема.

Программы редактирования субтитров, в большинстве своём, представляют собой структурные редакторы. То есть, при загрузке файл разбирается в некий внутренний формат, и всё редактирование делается в виндовой формочке. Отдельно время начала, отдельно время конца, отдельно текст. И выпадающий список стилей. Понятно, если формат где-то нарушен, то загрузить файл не представляется возможным, а перемещение с одного места на другое сопряжено с длительным тасканием мыши.

Почему-то все виденные мной редакторы субтитров при нажатии на клавишу сдвига двигают только текущую фразу. Видимо, по принципу «двигать умеем, остальное не волнует». Я за собой замечал: когда мне надо править тайминг в готовых субтитрах, самые часто встречаемые проблемы — это (1) одна фраза в субтитрах длиннее/короче, чем в фильме, (2) одна пауза в субтитрах длиннее/короче, чем в фильме. Отсюда вывод: редактор должен иметь клавиши для операций «сдвинуть все фразы, начиная с текущей, на некоторый квант времени», и «сдвинуть конец текущей и целиком все последуюшие фразы».

Очень редко в редакторе есть встроенный плеер, чтобы можно было посмотреть, как оно вообще будет. Практически никогда этот плеер не поддерживает стили. То есть всё валится одним шрифтом вниз. А я хочу видеть, как оно будет. Вывод: для просмотра должен использоваться внешний плеер, поддерживающий SSA в полном объёме. И просмотр должен синхронизироваться с позицией курсора в редакторе.

Ну и, наконец, стили. Я обычно использую минимум три стиля — обычная фраза, overvoice (голос за кадром, обозначающий мысли персонажа) и caption (перевод надписи в кадре). Тут use case простой. На входе имеется полностью неформатированный текст после распознавания с DVD. Нужно во время просмотра определять подходящий стиль и применять его без остановки плеера. Соответственно, никаких выдёргиваемых мышью combo box’ов — стили должны быть назначены на клавиши.

Поразмыслив, посидел на выходных, поразбирался в том, как писать плагины к FAR’у, и как рулить программно Media Player Classic’ом (мой любимый плеер на данный момент, и поддержка SSA в нём на уровне).

В принципе ничего сложного. Замечаю за собой, что от C’шного API уже воротит, хочется всё обернуть в C++, классики, шаблончики, RAII.

В общем, получилась такая штука. При активизации находит первый попавшийся запущенный экземпляр Media Player Classic’а и цепляется к нему. При включенном Scroll Lock’е раз в 200 миллисекунд спрашивает у него, где мы сейчас играем, и позиционируется на соответствующую фразу в редактируемом файле. И наоборот — при гулянии по файлу перематывает видео в плеере. В левой руке стили (QWE/ASD/ZXC), в правой тайминг (стрелки/Home/End/Ins/Del), на пробеле — пауза/play, и вперёд. Ну и, если приспичило текст подредактировать, то по Esc останавливаем плеер и вываливаемся в чистый редактор.

Теперь всё это потестировать…

(will be screened)
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

yurikhan: (Default)
Yuri Khan

August 2018

S M T W T F S
   1234
567891011
12131415161718
19202122232425
26 2728293031 

Links

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2025-06-15 03:53
Powered by Dreamwidth Studios