Sunday, July 18, 2010

Смотрим кино с субтитрами сразу на двух языках

Увидев только что на Хабрахабре вот эту блогозапись, подумал, а нельзя ли сделать так в Линуксе. Оказалось — можно. Причём метод не зависит от проигрывателя видео, главное, чтобы программа поддерживала субтитры в формате ASS.

Скриншот

if anyone needs this, i created a bash script allowing you to
watch/convert movies with two subtitles shown at the same time. you
may use this if a foreign friend comes to visit you and you both would
like to watch a movie with subtitles in your mother language, for
instance.
Если кому-то надо, я создал скрипт на bash'е, позволяющий смотреть/конвертировать фильмы так, чтобы одновременно показывались две дорожки субтитров. Вы можете им пользоваться, если, скажем, к вам в гости приезжает друг из другой страны, и вы бы оба хотели посмотреть фильм с субтитрами на вашем родном языке.

[MPlayer-users] two subtitles at one time (script)

Я сделал в скрипте изменения в двух строчках, добавив опцию -subcp utf-8 в команду конвертации SRT-файлов.

Зависимости скрипта — mplayer (в случае, если ваши файлы субтитров нужно сконвертировать в srt) и gnu utils (по поводу присутствия gnu utils на компьютере, что-то мне подсказывает, можно не беспокоиться).

Сохраним скрипт merge2ass.sh к себе на компьютер (ссылка выше).

Теперь откроем консоль и перейдём в каталог, в котором находится скрипт.

Например так:
cd scripts/ (находясь в домашнем каталоге)
Или так:
cd ~/scripts/ (находясь где-то ещё)

Установим скрипту права на исполнение (делается один раз):
chmod +x merge2ass.sh

Теперь посмотрим, какие аргументы принимает скрипт.

1. Файл фильма
2. Одни субтитры
2. Вторые субтитры
4. Необязательный аргумент, может быть «-pm» или «--play-movie» для мгновенного перехода к просмотру фильма

Итак, скачиваем русские и английские субтитры.

Русские субтитры, скорее всего, в кодировке CP1251. Меняем кодировку на UTF-8.

iconv -f cp1251 -t utf-8 movies/lie_to_me-s02e11-russian.srt > movies/lie_to_me-s02e11-russian-utf-8.srt

И запускаем скрипт.

./merge2ass.sh movies/lie_to_me-s02e11.avi movies/lie_to_me-s02e11-english.srt movies/lie_to_me-s02e11-russian-utf-8.srt

Скрипт создаёт файл lie_to_me-s02e11-bilingual.ass. Остаётся запустить кино.

mplayer -noautosub -ass movies/lie_to_me-s02e11.avi -sub movies/lie_to_me-s02e11-bilingual.ass -subcp utf-8

Приятного просмотра и, конечно же, изучения языков!

No comments: