Делаем DVD-RIP

Это даже не руководство, а скорее памятка на основные этапы и команды консоли. Оно ни в коем случае не претендует на полноту и является лишь направляющей, указывающей в какой стороне нужно читать обширные man’ы по mencoder. 🙂 Выбор всех опций кодирования базируются исключительно на личных предпочтениях.

Задача: Видео с DVD-диска сконвертировать в формат avi с сохранением необходимых звуковых дорожек. В многодорожечном avi-файле русская дорожка должна быть первой.

Есть два основных инструмента кодирования DVD — mencoder (компонент MPlayer) и transcode. Я предпочитаю кодировать с помощью mencoder, так как я могу в реальном времени предпросматривать результат применения фильтров (главным образом — деинтерлейсинг), путём передачи тех-же опций mplayer’у. А transcode я использую для объединения дорожек и устранения аудио рассинхронизации.

Общая схема

1. Копирование

Копируем содержимое DVD-диска на жёсткий диск. Открываем консоль и переходим в каталог, куда был скопирован DVD.

2. Определяем номера дорожек

Ищем нужный title, на нём дорожку с русским языком и заодно языки прочих дорожек.

mplayer -alang ru -dvd-device ./ dvd://1

Можно также использовать опцию -aid для явного указания номера дорожки, если производитель DVD поленился указать язык. Нумерация дорожек начинается со 128-ми. Обычно номер дорожки с русским 128 или 129.

3. Срезка чёрных полос

mplayer может автоматически определять параметры срезания экрана для устранения чёрных полос по краям экрана.

mplayer -vf scale=640:-2,cropdetect -dvd-device ./ dvd://1

Для каждого кадра на экран консоли будут выведены оптимальные параметры срезания

[CROP] Crop area: X: 22..695  Y: 21..456  (-vf crop=672:432:24:24).

где crop=672:432:24:24 — опции, которые необходимо указать при кодировании.

4. Деинтерлейсинг

Если видео черезстрочное (то есть тут и там при движении появляются горизонтальные полоски), подбираем видеофильтр для устранения этого эффекта. В большинстве случаев работает сочетание pullup,softskip. Проверяем командой:

mplayer -vf pullup,softskip -dvd-device ./ dvd://1

Хотя встречаются и такие тяжёлые случаи:

mencoder -alang ru -dvd-device ./ dvd://1 -vf field=0,pp=lb,scale=512:-2 -ovc lavc -oac copy -o proba.avi

Или то-же самое, но с лучшим качеством за счёт удвоенной частоты кадров:

mencoder -alang ru -dvd-device ./ dvd://1 -fps 60000/1001 -ofps 60000/1001 -vf tfields=2,pp=lb,scale=512:-2 -ovc lavc -oac copy -o proba.avi

5. Кодируем

Кодируем кодеком xvid в два прохода с русской звуковой дорожкой.

for i in 1 2; do mencoder -alang ru -ovc xvid -xvidencopts pass=$i:bitrate=1100:cartoon:chroma_opt:vhq=2:bvhq=1 -oac copy -vf pullup,softskip,scale=640:-2,crop=592:320:24:20,harddup -o output.avi -dvd-device ./ dvd://1; done

Если нужен однодорожечный avi-файл с mp3-дорожкой, то вместо -oac copy пишем -oac mp3lame -lameopts br=96:cbr:mode=1.

harddup — необходимо вставлять всегда для сохранения синхронизации аудио и видео.

xvidencopts — pass=$i оставляем всегда, остальное в зависимости от предпочтений и типа материала. Примеры:

Очень высокое качество:

chroma_opt:vhq=4:bvhq=1:quant_type=mpeg

Высокое качество:

vhq=2:bvhq=1:chroma_opt:quant_type=mpeg

Быстро:

turbo:vhq=0

В реальном времени:

turbo:nochroma_me:notrellis:max_bframes=0:vhq=0

  • quant_type=mpeg — повышает детализацию изображения
  • cartoon — кодирование аниме/мультфильмов.

Если нужем видеофайл только с одной дорожкой то на этом и останавливаемся и сразу переходим к пункту «Устранение рассинхронизации».

Многодорожечные avi-файлы

1. Убираем аудио из кодированного файла

Теперь в бой вступает transcode — с его помощью мы будем обрабатывать и подсоединять звуковые дорожки. Поэтому, предварительно убираем звук из кодированного avi-файла:

mencoder -o nosound.avi -ovc copy -nosound output.avi

2. Кодируем звуковые дорожки

Если хотим сохранить ac3 звук, то пишем

mplayer -dvd-device ./ dvd://1 -alang ja -dumpaudio -dumpfile ja.ac3

А если хотим перекодировать в mp3, то

LNG=ja && mplayer -dvd-device ./ dvd://1 -ao pcm:fast:file=${LNG}.wav -vo null -vc null -alang ${LNG} && lame -b 96 ${LNG}.wav ${LNG}.mp3 && rm ${LNG}.wav

3. Присоединяем аудио дорожки к видео

avimerge -i nosound.avi -p ru.mp3 -b 0 -o output.avi

avimerge -i output.avi -p ja.mp3 -b 0 -o output2.avi

Устранение рассинхронизации

А теперь начинаются танцы с бубнами. Если в итоговом файле output.avi звук оказывается отстающим или опережающим, то

avisync -i output2.avi -o output3.avi -a 0 -n 4

Замечание: при проигрывании результирующего фала mplayer ведёт себя крайне странно — он ставит дорожкой по-умолчанию вторую дорожку. Это сильно сбило меня с толку поначалу — казалось, что сдвиг дорожки не выполняется. Но после того как мы синхронизируем вторую дорожку

avisync -i output3.avi -o output4.avi -a 1 -n 4

всё встаёт на свои места.

Прочее

Замена дорожки в avi-файле:

mencoder -oac copy -ovc copy  -o output_movie.avi -audiofile input_audio.mp3 input_video.avi


Комментарии:

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