Редактируем субтитры в Linux

2

Тем, кто занимается обработкой видео или просто пользователям, которые любят комфортный просмотр фильмов, приходится сталкиваться с субтитрами. Об инструменте позволяющем создать или отредактировать субтитры в Gnu/Linux пойдет речь далее.

Какие бывают субтитры?

Перед началом работы следует сказать пару слов о теории, чтобы было понятно, о чем собственно речь. В материалах Википедии сказано так “Субтитры (также: сабтитры, от англ. subtitles — дословно подписи снизу; (жарг.) сабы, сокращение от «сабтитров») — текстовое сопровождение видео, дублирующее или дополняющее звук фильма или передачи. Преимущественно в субтитрах отражена речь персонажей”. Это текстовая строчка, которая показывается внизу экрана, с помощью которой дублируются диалоги и иногда поясняют ситуацию, происходящую на экране. Полезны не только людям со слабым слухом, но и при изучении иностранного языка. Пригодятся и в том случае, когда нельзя найти переведенный фильм, а есть только оригинальная версия, а иногда просто очень хочется просмотреть фильм на языке оригинала, без испорченной звуковой дорожки, затирающей нормальный звук. Субтитры в этом случае также могут помочь.

Субтитры бывают нескольких видов. Так в том случае, когда изображение с текстом накладывается на исходное видео при кодировании, субтитры называются жесткими (Hard subtitles) или вшитыми. Преимуществом таких субтитров является то, что они будут выводиться всеми без исключения проигрывателями, как программными, так и аппаратными, но вот отключить их нельзя. На DVD изображения с субтитрами, как правило, не вшиваются в файл, а хранятся отдельно (в файлах sub), пользователь при необходимости может их, как включить, так и отключить, но требуют поддержки со стороны проигрывателей. Такие субтитры субтитры на умном языке называют пререндеренные (prerendered). И, наконец, мягкие (soft) или программные субтитры представляют собой текст, иногда с элементами разметки и эффектами. Они также идут в отдельном файле, но требования к оборудованию у них несколько выше, так как часть процессорного времени уходит на их просчет и прорисовку. Еще одна польза от мягких и пререндеренных субтитров – возможность использования нескольких языков.

Среди пользователей наиболее популярны именно мягкие субтитры, так как их легко создавать и редактировать, в том числе и переводить, они меньше в размере, поэтому скачать их можно и при слабом канале. Хотя при создании DVD придется столкнуться и с пререндеренными. Но это не проблема, так как имеющиеся программы позволяют перекодировать субтитры из одного типа в другой. Получить готовые субтитры можно со многих сайтов, введите в Гугле что-то вроде “субтитры к фильмам” и вам предложат миллион тематических сайтов предлагающих готовые субтитры сразу на нескольких языках и типах. При этом вам могут встретиться файлы следующих типов (расширений):

ssa/ass — текстовый формат субтитров, который использовался в программе Sub Station Alpha (позднее Subtitle Workshop). Субтитры этого типа могут содержать форматирование: размер букв и гарнитура, цвет, положение символов, а также некоторые видео-эффекты в (затенение, движение, повороты и др.), текст может быть в нескольких кодировках.

srt — текстовый формат субтитров программы SubRip, изначально формат оформление текста не поддерживал, сейчас поддерживается изменение цвета и различные начертания символов.

— smi (smil) — текстовый формат субтитров, основанный на SGML, почти все что характерно по оформлению текста для HTML и CSS поддерживается и в этом формате.

— sub/idx — двоичный формат пререндерных субтитров применяемый в программе VobSub, иногда называют субтитрами формата Vobsub, хоть это и не очень верно, но зато сразу становится понятным, о чем речь.

— s2k — текстовый формат субтитров принятый в программе Sasami.

Наиболее популярными являются два формата SRT и SUB, которые подключаются к большинству программ видеопроигрывателей.

Программы для работы с субтитрами

Теперь пора перейти от теории к практике. Вот уже более полгода при работе я использую дистрибутив Kubuntu, привычке изменять пока не собираюсь, хотя большая часть написанного будет действительна и в других дистрибутивах Linux. Чтобы узнать, что есть в Kubuntu для нашего случая, вводим:

$ sudo aptcache search subtitle

Кроме проигрывателей и всяких библиотек были выданы следующие приложения:

ksubtile (ksubtile.sourceforge.net) – редактор субтитров для KDE;

subtitleripper (subtitleripper.sourceforge.net/) – простой риппер DVD субтитров, в работе которого необходим transcode;

submuxdvd (www.boutell.com/lsm/lsmbyid.cgi/002188) — мультиплексор субтитров, с помощью которого можно добавить их в файлы .vob.

К сожалению после ввода команды “sudo aptget install ksubtile subtitleripper submuxdvd” из всех указанных программ захотел устанавливаться только Ksubtile. Это довольно простой и удобный редактор субтитров, который хорошо интегрируется в среду KDE и позволяет переносить, растягивать и редактировать файлы субтитров SRT и некоторых других форматов субтитров, которые понимает MPlayer. Кроме того, он обеспечивает простой в использовании интерфейс к MPlayer, что позволяет упростить синхронизацию субтитров с фильмом. Единственным его недостатком является отсутствие поддержки кодировок отличных от английской. Поэтому пришлось искать выход из ситуации, и он естественно нашелся.

Пакеты для работы с мультимедиа я брал с http://debian-multimedia.org/, содержащего большое количество программ (например, мультимедиа центр Freevo аналог MythTV), но для Debian. Большая часть из них ставится в Kubuntu без проблем, но все же есть исключения. Набрав в веб-браузере http://packages.ubuntu.com/dapper/, я нашел нужные мне программы, значит необходимо просто добавить еще один источник.

Поэтому:

$ sudo mcedit /etc/apt/sources.list

Комментируем следующие строчки (у кого они есть).

deb http://freevo.sourceforge.net/debian unstable main

deb http://debian-multimedia.org sarge main

И добавляем:

deb http://archive.ubuntu.com/ubuntu/ gutsy universe multiverse

Сохраняем изменения и вводим в консоли.

$ sudo aptget update

Снятие субтитров в Linux

После проведенных экзекуций в списке известных apt утилит осталась subtitleripper, но появилась еще ksubtitleripper. Их и устанавливаем.

$ sudo apt-get install subtitleripper ksubtitleripper netpbm transfig

Последние две были выбраны, так как они являются рекомендуемыми для subtitleripper.

Вообще для работы с DVD дисками в Linux есть отличная программа (точнее скрипт на Perl) dvd::rip (www.exit1.org/dvdrip) умеющий, в том числе и грабить субтитры, но dvd::rip вероятно заслуживает отдельной статьи, поэтому поговорим о нем как ни будь в следующий раз. Остановимся пока на subtitleripper и ksubtitleripper. Первый пакет включает в себя 5 консольных утилит – srttool, subtitle2pgm, pgm2txt, vobsub2pgm, subtitle2vobsub, выполняющих свою задачу, используя которые можно конвертировать DVD субтитры в subrip-текстовый или VobSub форматы. Поток превращается в файл формата pgm или ppm, а затем распознается и превращается в ASCII с помощью gocr (jocr.sourceforge.net), который будет установлен в качестве зависимостей (для ksubtitleripper обязательной). Для полноценной работы первой понадобится transcode (www.transcoding.org), которую можно установить, набрав “sudo aptget install transcode”.

Чтобы извлечь субтитры в ASCII из vob файлов принадлежащих первому фильму, находящемуся в текущем каталоге вводим, следующие команды:

$ сat vts_01_?.vob | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o movie_1

$ pgm2txt movie_1

$ srttool -s -i movie_1.srtx -o my_movie_1.srt

Процесс это долгий и при слабом компьютере времени на эту операцию уйдет прилично. На выходе получим файл my_movie_1.srt содержащий субтитры. Параметров у команд как видите не много, объясню только –a 0x20. Фильмы как помните, могут содержать несколько субтитров, значение 0x20 соответствует первому, 0x21 второму и так далее. Субтитры в формате VobSub получаются на порядок быстрее, но и весят больше. Сначала извлекаем поток субтитров, командой:

$ cat vts_01_?.vob | tcextract -x ps1 -t vob -a 0x20 > my_sub.ps1

И затем перекодируем в формат VobSub.

$ subtitle2vobsub -i vts_01_0.ifo -p mysub.ps1 -o movie_name

В документации описаны все возможные варианты и комбинации использования этих утилит. Фронт-енд к subtitleripper для библиотек KDEksubtitleripper (ksubtitleripper.berlios.de позволяет получить файл субтитров с исходных .vob и .sub файлов в srt формат намного проще, не заморачиваясь на запоминание многочисленных параметров.

ksubtitleripper

Запускаем, набрав в терминале ksubtitleripper, затем в поле Vob or Sub Files указываем источник, в Directory – каталог для сохранения файлов и нажимаем OK. Вот и все премудрости. Если gocr не может распознать некоторые буквы, пользователю задается вопрос, параллельно производится проверка правописания. Поддерживается три кодировки UTF8, DOS и стандартная английская. Кстати субтитры в формате VobSub можно снять и с помощью mencoder, который входит в состав MPlayer.

Редактирование субтитров с помощью SubtitleEditor

Поискав немного по тематическим сайтам удалось найти подходящую программу с удобным GTK+ интерфейсом с помощью, которой можно редактировать субтитры, в том числе и на русском языке — SubtitleEditor (kitone.free.fr/subtitleeditor/). Используя SubtitleEditor можно действительно легко добавлять, редактировать или удалять субтитры, с удобной системой поиска и замены, конвертировать частоту кадров, контролировать время и отслеживать ошибки. Поддерживает несколько форматов субтитров (SSA, ASS, SubRip (srt), MicroDvd (sub)). Распространяется под лицензией GNU GPL.

В репозитарии Ubuntu нет этой программы, но это не значит, что придется возиться с компиляцией. Открываем файл /etc/apt/sources.list и добавляем в него строки (для Dapper Drake):

deb http://repository.debuntu.org/ dapper multiverse

deb-src http://repository.debuntu.org/ dapper multiverse

После чего обновляем базу и устанавливаем:

$ sudo apt-get update

$ sudo apt-get install subtitleeditor

Во время установки будет выдано сообщение о том, что “Следующие пакеты невозможно аутентифицировать!” и запрос на продолжение, нажимаем Y, ничего страшного в этом нет. Если все таки захотелось немного по компилировать, распакуйте архив и введите ./autogen.sh && make && make install. Запускаем программу, набрав в терминале “subtitleeditor” или выбрав соответствующий пункт в меню KMultimedia.

Редактирование субтитров является частным случаев создания нового, поэтому рассмотрим именно этот процесс. Перед началом работы перейдите в Options-Preferences и затем в вкладке Encoding нажав Add добавьте кодировку, большинство использует CP1251, но ради пролетарской солидарности можете добавить еще и KOI8R и другие начинающиеся на Cyrillic. Затем воспользовавшись стрелками переместите основную кодировку в самое начало списка. При создании субтитров это роли не играет, но при сохранении можно будет указать любую из выбранных кодировок. Для создания нового файла субтитров выбираем FileNew (Ctrl+N). Чтобы вставить новую запись, выбираем EditInsert After (клавиша Insert), появится новая строка.

subtitleeditor

Название и количество колонок может быть разным, для добавления/удаления новых выберите нужные в ViewColumns, хотя все колонки тоже не нужны. Выбрав ViewTiming можно включить предпросмотр видео. Записи нумеруются по порядку, при необходимости можно добавить запись в любое место, сдвинув их вниз. Двойным щелчком мышки по колонкам start и end добавляем соответственно время начала и окончания показа текущего субтитра, в duration будет подсчитано время показа. В поле text вводим текст, который будет выводиться на экран, не забыв нажать на Enter по окончании ввода. И наконец в Style воспользовавшись выпадающим списком, выбираем стиль выводимого текста (только для .ssa, .ass). По умолчанию присутствует только один стиль Default. Для добавления своего стиля выбираем ToolsStyle Editor.

Style Editor

Пользоваться Style Editor очень просто. Прописываем в Name название стиля, затем в поле Fonts выбираем шрифт и эффекты (жирный, подчеркивание и пр), в Appearence Color – цвет, в Border – толщину рамки, в Transformations – можно настроить некоторые эффекты и в Aligment – выравнивание. Когда все введено, нажимаем Insert (или Ctrl+Insert) и создаем новую строку, повторяя все операции сначала. При вводе времени легко ошибиться и время начала показа одного субтитра может перекрываться с предыдущим, для проверки правильности выберите ToolsCheck Time.

После создания нового субтитра его, скорее, всего, понадобится синхронизировать с фильмом. Рассинхронизация возможна при различной частоте кадра (framerate) в фильме и созданном файле субтитров или в простом запаздывании или опережении субтитров. Можно конечно использовать возможности видео проигрывателя. Так в MPLayer нажатие на Y прогоняет субтитры на одну фразу вперёд, подгоняя её к настоящему моменту, G — листает на одну фразу назад, а клавиши Z и X — подгоняют субтитры, ориентируясь не по порядку фраз, а по времени. Но это проблему легко подправить в SubtitleEditor. Для изменения framerate переходим в Tools-Change FPS и устанавливаем новое значение в New.

Change FPS

Узнать framerate видеофильма очень просто, практически каждый видеопроигрыватель позволяет просмотреть информацию об открытом файле. Например, при запуске mplayer выдается такая информация:

$ mplayer /home/grinder/video/movie.avi

VIDEO: [DIVX] 352×216 24bpp 25.000 fps 94.1 kbps (97.5 kbyte/s)

Аналогичную информацию выдает XINE, выберите в настройках Поток-Информация (Alt-I) или при наведении мышкой на видеофайл в Konqueror, во всплывающем окне будет показана нужная информация. Если субтитры запаздывают или спешат, то отмечаем время, когда нужно показать субтитр, с которого произошел сдвиг. Затем щелкаем по нужному субтитру и открываем EditMove. В появившемся окне вводим время сдвига, после нажатия на ОК время показа субтитров идущих следом за редактируемым, будет автоматически пересчитано. В этом же меню есть пункты позволяющие добавить 100 мс ко времени начала и окончания текущего субтитра, либо только к start, или увеличить продолжительность. Для первичной синхронизации субтитров можно воспользоваться также пунктом Tools->Scale. Вы отмечаете первый и последний номер субтитров, а затем в Destination время начала и окончания показа выбранной группы. Время будет автоматически перераспределено между всеми выбранными субтитрами. В SubtitleEditor есть еще некоторые полезные функции. Так выбрав ToolsSplit можно сохранить субтитры не целиком, а только в выбранном диапазоне с указанием формата. Для объединения субтитров воспользуйтесь ToolsJoin. Имеется и проверка орфографии в ToolsSpell Sheck, но пока SubtitleEditor не поддерживает русского и украинского.

Есть еще один довольно неплохой редактор субтитров GNOME Subtitle Editor GSubEdit (gsubedit.sourceforge.net), так как используется GTK интерфейс, то его можно рекомендовать для тех, кто предпочитает среду Gnome.

Как видите, в Linux есть все, что нужно тем, кто хочет работать с субтитрами. И хотя некоторые инструменты еще не достигли релизов с большими номерами, они уже вполне готовы к употреблению. Linux forever!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *