Кодировка субтитров в GNU/Linux
Большинство русскоязычных субтитров (.srt) используют стандартную кириллистическую кодировку для Windows (cp1251). Поэтому начинающие пользователи GNU/Linux могут испытывать с этим проблемы. На самом деле видимых сложностей тут нет, все сводится к тому, что пользователи элементарно не знают, как использовать субтитры в своем дистрибутиве.
Для решения этой задачи существует всего лишь два пути: сменить кодировку субтитров, подключить субтитры, явно указав кодировку.
Рассмотрим оба способа подробней. Первый может быть выгоден тогда, когда файлов субтитров не так много и не предполагается их дальнейшее использование в Windows-системах (иначе, там придется применять второй метод). Для конвертирования кодировки, в том числе кодировки субтитров в GNU/Linux есть утилита iconv, использование которой не вызывает сложностей.
$ iconv -l
выведет список всех доступных кодировок, цитирую:
"Следующий список содержит все известные встроенные кодировки. Это не обязательно означает, что можно использовать любые комбинации данных имен в параметрах командной строки FROM и TO. Одна и та же кодировка может быть перечислена под несколькими именами (псевдонимами)."
Далее, чтобы конвертировать файл субтитров (srt) из cp1251 в Unicode воспользуйтесь следующей командой:
$ iconv -f CP1251 -t UTF-8 subtitles_in_cp.srt -o subtitles_in_utf.srt
Также можно воспользоваться пропуском предупреждений, добавив ключ "-s". Если же в субтитрах при конвертировании встретится ошибка, то процесс остановится, чтобы ошибочные символы убрать из вывода используйте ключ "-c".
Помимо iconv можно использовать enconv, спасибо комментариям:он (enconv) сам определит кодировку и сконвертирует в соответствующую системной локали. Так что не надо писать длинную строку параметров.
Второй путь - это явное указание на используемую кодировку для субтитров. У этого метода также есть свои недостатки. Во-первых, не все плееры имеют такую настройку, во-вторых, при использовании других субтитров с другой кодировкой придется выполнять процедуру смены снова, а затем менять опять. Что конечно же доставляет неудобства, однако не запрещает его использовать. В-третьих, в системе должны быть установлены True Type шрифты из Microsoft Windows. Для Ubuntu\Debian пакет называется "msttcorefonts" и устанавливается командой:
$ sudo apt-get install msttcorefonts
Итак, начнем пожалуй с уникального и достаточно широко распространенного Mplayer. За подключение субтитров отвечает ключ с параметром "-sub subtitles.srt", чтобы задать кодировку используемых субтитров необходимо добавить "−subcp <кодировка>", в случае с кодировкой Windows это будет cp1251. Таким образом, строка запуска видео файла example.ogv будет выглядеть так:
$ mplayer -subcp cp1251 -sub subtitles.srt example.ogv
Из советов комментаторов: чтобы раз и навсегда сказать о кодировке используемых субтитров, можно изменить файл конфигурации. В ~/.mplayer/config добавляем строку:
subcp = enca:ru:cp1251
Если Вы пользуетесь SMPlayer, то в настройках (Ctrl+P) в разделе "Субтитры" можно задать настройки кодировки субтитров по умолчанию, выставив "Кириллица Windows (CP1251)". А также SMplayer поддерживает автоматическое определение кодировки (спасибо за комментарий).
Для VLC заходим в настройки (Ctrl+P), "Субтитры и индикация", "кодировка по умолчанию". Устанавливаем либо автоопределение (autodetect), либо "Cyrillic (Windows-1251)".
8 комментариев:
Вообще говоря, если smplayer брать не самый старый, то там можно включить автоопрделение кодировки. После чего не надо беспокоиться какие субтитры в cp1251, какие в utf8
Mplayer уже года два как собирается с поддержкой enca по дефолту. Последнее, соответственно, само определяет кодировку сабов и выставляет нужную, стоит лишь прописать в ~/.mplayer/config строку subcp = enca:ru:cp1251И не нужно извращаться с конвертированием из одного формата в другой, или постоянным прописыванием жесткой кодировки в настройках.
Спасибо за то, что открыли для меня iconv. :)
То, что нужно!
> После чего не надо беспокоиться какие субтитры в cp1251, какие в utf8- угу, точно, добавлю
> И не нужно извращаться с конвертированием из одного формата в другой- иногда нужно извращаться, но добавлю, спасибо
> Спасибо за то, что открыли для меня iconv. :)
То, что нужно!- да не за что, для этого и писалось
Млин, совсем забыл про ключик -subcp, за напоминание спасибо =)
. В ~/.mplayer/config добавляем строку:
$ subcp = enca:ru:cp1251
===> Тут, кажется, $ лишний.
И, кстати, вместо iconv можно использовать enconv -- он сам определит кодировку и сконвертирует в соответствующую системной локали. Так что не надо писать длинную строку параметров :)
> Тут, кажется, $ лишний.
спасибо, убрал
> И, кстати, вместо iconv можно использовать enconv
добавил
спасибо за комментарий.
Отправить комментарий