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

24 Янв
2008

Тем, кто занимается обработкой видео или просто пользователям, которые любят комфортный просмотр фильмов, приходится сталкиваться с субтитрами. Об инструменте позволяющем создать или отредактировать субтитры в 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 apt-cache search subtitle

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

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

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

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

К сожалению после ввода команды “sudo apt-get install ksubtile subtitleripper submux-dvd” из всех указанных программ захотел устанавливаться только 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 apt-get 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 apt-get install transcode”.

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

$ сat vts_01_?.vob | tcextract -x ps1 -t vob -a 0×20 | 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 0×20 > 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” или выбрав соответствующий пункт в меню K-Multimedia.

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

subtitleeditor

Название и количество колонок может быть разным, для добавления/удаления новых выберите нужные в View-Columns, хотя все колонки тоже не нужны. Выбрав View-Timing можно включить предпросмотр видео. Записи нумеруются по порядку, при необходимости можно добавить запись в любое место, сдвинув их вниз. Двойным щелчком мышки по колонкам start и end добавляем соответственно время начала и окончания показа текущего субтитра, в duration будет подсчитано время показа. В поле text вводим текст, который будет выводиться на экран, не забыв нажать на Enter по окончании ввода. И наконец в Style воспользовавшись выпадающим списком, выбираем стиль выводимого текста (только для .ssa, .ass). По умолчанию присутствует только один стиль Default. Для добавления своего стиля выбираем Tools-Style 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, во всплывающем окне будет показана нужная информация. Если субтитры запаздывают или спешат, то отмечаем время, когда нужно показать субтитр, с которого произошел сдвиг. Затем щелкаем по нужному субтитру и открываем Edit-Move. В появившемся окне вводим время сдвига, после нажатия на ОК время показа субтитров идущих следом за редактируемым, будет автоматически пересчитано. В этом же меню есть пункты позволяющие добавить 100 мс ко времени начала и окончания текущего субтитра, либо только к start, или увеличить продолжительность. Для первичной синхронизации субтитров можно воспользоваться также пунктом Tools->Scale. Вы отмечаете первый и последний номер субтитров, а затем в Destination время начала и окончания показа выбранной группы. Время будет автоматически перераспределено между всеми выбранными субтитрами. В SubtitleEditor есть еще некоторые полезные функции. Так выбрав Tools-Split можно сохранить субтитры не целиком, а только в выбранном диапазоне с указанием формата. Для объединения субтитров воспользуйтесь Tools-Join. Имеется и проверка орфографии в Tools-Spell Sheck, но пока SubtitleEditor не поддерживает русского и украинского.

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

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

2 Комментариев к Редактируем субтитры в Linux

Аватар

Linuxoid - все что знаю о Туксе » Архив блога » Создаем DVD с KMediaFactory

Февраль 24th, 2008 | 16:20

[...] (как и с помощью каких инструментов это можно сделать здесь) выбрав Add указываем на файл, а также на размер шрифта [...]

Аватар

Linuxoid - все что знаю о Туксе » Архив блога » Добавляем субтитры в DVD

Июнь 19th, 2008 | 9:27

[...] программах для редактирования субтитров рассказано здесь, теперь как извлечь и записать субтитры в видео файл. [...]

Комментировать

Наверх