From: Pavel <http://po1tinnik.narod.ru/>
Date: Mon, 18 Nov 2004 14:31:37 +0000 (UTC)
Subject: Как превратить DVD в AVI
Оригинал: http://po1tinnik.narod.ru/
Данный текст не является ни руководством, ни инструкцией по кодингу в
MPEG4. Это просто мой опыт борьбы с видеогигабайтами. Современные
кодеки позволяют при грамотной раскладке перегонять фильмы практически
без потери качества, при условии качественного первоисточника. В свое
время я перепробовал для этого множество программ и остановился на
mencoder (http://www.mplayerhq.hu/homepage/design7/news.html).
К сожалению (или нет) под Windows (http://www.microsoft.com/) не существует
качественного порта mencoder. Win сборка ограниченна по функциональным
возможностям и годится лишь для изготовления полуфабрикатов, которые
можно скормить VirtualDub (http://www.virtualdub.org/) или его клонам
(http://www.doom9.org/software2.htm#editing) (они так и не могут
научиться понимать сырой MPEG. странно). Поэтому если у вас нет опыта
и желания работать в Linux, (http://www.linux.org/) дальше можно не читать.
Что умеет mencoder? Можно сказать, что практически все. На самом деле
из пакета собирается 2 программы: mplayer и mencoder. Mplayer понимает
и воспроизводит все видеоконтейнеры и все видеопотоки. Очень удобно
кстати. Mencoder же умеет эти контейнеры открывать и создавать
полноценный avi. Есть только 2 вещи которые неплохо было бы добавить к
функциональности mencoder - разрезка файлов по заданным параметрам
(эта фича присутствует, но ограничена по возможностям) и добавление
нескольких звуковых дорожек. Хотя все это умеет делать другой пакет
под названием transcode. (http://zebra.fh-weingarten.de/~transcode/)
Итак, перед нами стоит задача перегнать
MPEG2 (http://www.mpeg.org/MPEG/index.html) в MPEG4 и запихнуть
его в контейнер, придуманный, но как всегда больше не поддерживаемый,
MicroSoft, (http://www.microsoft.com/) т.е. Avi (http://www.jmcgowan.com/avi.html#Definition)
Я не буду описывать сборку (компиляцию) пакета mplayer, описание
можно найти в прилагаемой документации, кстати, оно выполнено великолепно
и очень самодостаточно, причем есть и на русском языке.
Первый этап - выбор кодека. На момент написания статьи (31.10.2004) лучшим,
на мой взгляд, является опенсорсная ветка DivX (http://www.divx.com/) -
XviD (http://www.xvid.org/) При равных параметрах, потери в качестве у XviD
наименьшие. Да и под linux DivX не особо блистает. Поэтому я буду
рассматривать в примерах XviD. Второе, это нужно определиться с
размерами готовых файлов. Здесь много вариантов и все зависит от
вкусов и желаний. К слову, mencoder имеет встроенный калькулятор
битрейта. Работает это так: кладем vob-ы содержащие фильм в
какой-нибудь директорий, пишем скрипт::
cat *.vob | - читаем по порядку vob файлы и отдаем в трубу.
-oac mp3lame - перегоняем звук в mp3
-lameopts preset=medium - установка битрейта mp3, причем VBR. можно не
указывать, тогда будет standart. детальное описание в man.
-aid 128 (0x80) - говорим какая звуковая дорожка. может быть другая,
но можно проверить в mplayer и выбрать нужную.
-ovc frameno - без видео. для калькулятора само то.
-ni - Force usage of non-interleaved AVI parser (fixes playing of some
bad AVI files) к слову, не помешает.
- - читаем из трубы.
в итоге вы получите файл test.avi, содержащий только звук, и расклад
по битрейту.
Достаточно наглядно, не правда ли? Кстати если DVD с ac3 можете
указать -oac copy, тогда получите битрейт с ac3. Если вы определились
с битрейтом, то пора приступать к енкодингу. Сперва удалим лишний
мусор, который добавляют в vob для совпадения картинки с пропорциями
экрана монитора, те croping и изменим размер картинки примерно
512хХХХ, те scaling. Такой формат считается оптимальным соотношением
по качеству выходного продукта. Натравливаем mplayer на любой vob (у
вас может быть другое имя файла):
запомните эти параметры -vf crop=704:346:8:64 (первые 2 цифры размер
полезного окна, 3 цифра отступ слева, 4 отступ сверху) и снова с уже
известными параметрами пробуете скалинг:
я специально задал второй параметр у скалинга неверный, и mplayer его
сам скорректировал (в самом низу картинки). Но так бывает не всегда,
иногда требуется явно указывать -aspect 16:9. И это еще не все. Бывает
cropdetect тоже не срабатывает, и приходится определять crop вручную.
А поскольку дело это неблагодарное и cropотливое, я пользуюсь
avidemux2 с его виsуальными настройками этих фильтров. Но тут уж
каждый сам себе терапевт...
Ну а теперь за дело. Во все том же самом директории пишете новый
скрипт:
-nosound - при первом проходе нам звук не нужен
-ovc xvid - собственно XviD :)
-xvidencopts vhq=1:pass=1:qpel:trellis - pass=1 это и есть первый
проход при котором кодек обсчитывает каждый фрейм и записывает в файл
калькуляцию. остальные опции смотрите в man, и решайте стоит их
включать или нет.
-sws 2 - тоже в man
-vf crop=704:346:8:64,scale=512:280,pp=lb - pp=lb убирает
деинтерлизинг. нужен только если после скалинга не исчезеат расческа.
-o /dev/null - то что получается на выходе отбрасываем. толку от этого
не много, нам нужен только xvid-twopass.stats
Картинка, правда, от другого процесса, но смысл понятен...
По завершению первого прохода делаем второй, причем очень важно
сохранить все настройки фильтров идентичными:
Вот в принципе и все, добавлю только что на моем атлоне 2000 час
фильма собирается примерно 2-2.5 часа, зато результат остается надолго
в коллекции. Вы же в праве делать, так как хотите, хоть все за один
проход.
ЗЫ. Если появятся практические вопросы по енкодингу, пишите в форум
сюда (http://mm.pk.ru/forum/) или сюда (http://linux.pk.ru/phorum/read.php?f=5&i=1&t=1)
Постараюсь ответить.
CopyLeft (C) 2004 г.
1186 Прочтений • [Как превратить DVD в AVI (dvd avi divx mplayer)] [08.05.2012] [Комментариев: 0]