DVD Rip

         

FairUse.


В самом названии заложено, что не надо её использовать для нехороших целей, таких как обкрадывание бедных медиа издательских компаний, а только с целью расширения кругозора, или экономии ресурса DVD привода :-) Хотя, исходя из того, как выглядит логотип этой программы, про происхождение названия есть и другое мнение...

При старте FairUse выводится лицензионное соглашение с которым надо согласиться, что бы запустить её. Одним из пунктов в этом соглашении является запрет на обсуждение программы, её функций, и даже самого факта её существования. Поэтому я специально оговорюсь, я не буду ОБСУЖДАТЬ FairUse, я её просто опишу. А если мне захочется её обсудить, то я попрошу брата запустить её, и пускай он соглашается с лицензией. В общем, не подкопаетесь ;-).

Итак,

(545 кб) это программа реализующая очень интересный алгоритм при декодировании, известный под названием MM4, то есть кодирование одного и того же фильма несколько раз с разными настройками кодеков, что бы в последствии выбрать лучшие части закодированные каждым из кодеков и соединить их вместе. Несмотря на реализацию столь продвинутого метода, работать с FairUse настолько просто, её интерфейс настолько продвинут, что первая мысль возникающая при ознакомлении с этой программой "Так не бывает!". Всё настолько просто, что описывая её можно было бы ограничиться всего лишь несколькими предложениями:

Выберете куда складывать промежуточные файлы, и какой привод у Вас DVD-ROM.

Выберете сам фильм, где предложат (обычно, он самый длинный).

Выберете размер файла, который хотите иметь, и желаемое разрешение.

Жмёте на кнопки Next, Auto, и тому подобные везде, где встретятся.

И всё. Можно наслаждаться результатом. Тем, кому хватает этого описания, бегом качать и кодить, кто хочет узнать немного больше, читаем дальше.

Итак, запустив FairUse, согласившись с лицензионным соглашением вы окажитесь в окне выбора файлов. Вариантов всего два, начать новый проект или продолжить работу над старым. При выборе нового проекта требуется указать имя проекта и место, куда будут складываться промежуточные файлы. Места требуется много, ведь FairUse сначала рипает содержимого DVD диска, а потом хранит там все промежуточные файлы, которые образуются при энкодинге фильма несколькими способами. Точный размер требуемого места определяется кодируемым фильмом а так же количеством и настройками используемых кодеров. Но, обычно, не стоит даже и приниматься если у вас меньше 6-7 свободных гигабайт на разделе.



в текущей версии FairUse нельзя


К сожалению, в текущей версии FairUse нельзя раскидывать временные файлы по разным дискам. После того как выбрано необходимое у пользователя спросят, в каком из приводов находится диск с фильмом, который требуется закодировать (обычно правильно выбирается автоматически), и после этого окажитесь в меню, где предложат выбрать нужный видеофрагмент. Из дополнительной информации по видеофрагментам указывается длина ролика, аудиодорожки и субтитры, что более чем достаточно для того, что бы выбрать то, что нужно. После того как выбрано нужное, соответствующие файлы с DVD диска будет переписаны на жёсткий диск и расшифрованы.

Файлы записываются в собственном формате, и не могут быть проиграны стандартными плеерами. Кроме этого, FairUse не может открывать уже рипнутые на HDD файлы, текущая версия (0.25) работает только напрямую с DVD дисками. Итак, после того как нужные файлы находятся на жёстком диске, вы окажитесь вот в таком окне:


В этом окне можно выбрать




В этом окне можно выбрать диапазон кадров, которые надо декодировать, вручную или выставив слайдер на нужное значение, и нажав на соответствующий значок, а так же вырезать ненужное, чтобы не тратить битрейт понапрасну. Сделать это можно и вручную, но удобнее воспользоваться автоматической резкой. При нажатии на кнопку Auto Set, FairUse выбирает несколько произвольных кадров из выбранного отрезка (обычно 16 или 32), анализирует их, определяет лишние области. Обычно, он делает это правильно, и ничего подправлять не нужно. Выбрав нужное, нажимаем на кнопку Next, и оказываемся в следующем окне, где предложат выбрать режим, в котором FairUse будет работать с видео. Этих режимов два, Native, когда видеопоток будет кодироваться в том виде, в котором он записан на DVD диске, и Field align mode, используемый тогда, когда видео записано в чрезстрочном формате, и каждый кадр разбит на два полукадра (подобных дисков становится всё меньше и меньше). Лучшим выбором будет воспользоваться кнопкой Auto detect, тогда FairUse проанализирует несколько кадров, и подскажет, какой режим лучше использовать.
Выбрав нужный режим, окажитесь в следующем окне, где предложат выбрать размер файла, который желательно получить, и разрешение, в котором фильм должен быть записан. Про основные принципы, которыми следует руководствоваться выбирая эти значения я уже писал, эти рекомендации подходят и для FairUse. Единственное новое понятие, с которым придётся встретиться в этом окне, это Compression Ratio. Это значение означает отношение размера оригинального кадра и компрессированного кадра. Чем оно меньше, тем качество выше. Автор FairUse рекомендует использовать значения не более чем 120:1 для динамичных фильмов, и не более чес 150:1 для спокойных фильмов. У меня нет оснований не доверять ему. При выборе размера учитывается место занимаемое звуком, но текущая версия FairUse не работает со звуком вообще, так что полученный файл будет меньше, останется место для того, что бы добавить звук. FairUse по умолчанию показывает только оптимальные (с его точки зрения) разрешения, если хотите чего-либо другого, снимите галочку с чекбокса Show only preferred resolutions. Выбрав нужное разрешение и нажав на кнопку Next, окажитесь в окне, где предложат выбрать количество и настройки кодеков, которые будут использоваться при кодировании фильма. Это окно является одним из важнейших, и даёт возможность настроить именно ту функцию, которая делает FairUse настолько отличным от других программ энкодеров. В этом окне можно ещё раз уточнить, какой размер файла желательно получить. Здесь же показывается и средний битрейт, который получиться при кодировании выбранного отрезка в выбранный размер. В отличии от большинства других программ, здесь значение битрейта указывается не в кбитах в секунду, а в килобитах на кадр (фрейм).

Для того что бы получить




Для того что бы получить более привычное значение, надо всего лишь умножить эту цифру на количество кадров в секунду (это значение показывалось в окне, где предлагалось выбрать режим работы с фильмом, Native или Field align mode).
Количество кодеков, которые могут быть использованы, 10. По умолчанию стоит 4. Вообще, можно нажать на кнопку Auto Add, и продолжить с тем, что предложит FairUse, обычно его выбор далеко не самый худший. Но можно добавить и самому. Для каждого из добавляемых кодеков можно выбрать его тип, Low-motion или High-motion, битрейт (в битах на кадр), минимальный и максимальный промежуток между ключевыми кадрами. Здесь стоит отметить, что кодеки которые используются при работе FairUse, это не тот Divx кодек, который используется большинством программ энкодеров и практически всеми плеерами. Автор FairUse переделал стандартный кодек, убрал несколько багов с него, и изменил механизм вставки ключевых кадров. Сделано это как с целью повышения качества получаемых фильмов, так и с целью уменьшения размера получаемых файлов. После того, как выбрано количество кодеков, которые будут использоваться, и все они настроены, остаётся только нажать кнопку Next, и начнётся процесс кодирования. Процесс этот весьма долгий, заметно дольше чем это заняло бы с другими программами энкодерами, потому что FairUse делает всё то же самое что и они, только несколько раз, столько, сколько кодеков используется. Приятный сюрприз ожидает владельцев SMP машин. Поддержка мультипроцессорных машин в FairUse сделана лучше всяких похвал, гораздо лучше чем во всех энкодерах, которые мне приходилось пробовать. Из-за этого, на SMP машине FairUse работает практически с той же скоростью, как на той же самой машине работает Flask!
После того как кодирование законченно, вы окажитесь в следующем окне, где предложат ещё раз выбрать итоговый размер файла. Выбрав размер, нажмёте на кнопку Recalculate, и увидите похожее окно:

В этом окне показывается статистика,




В этом окне показывается статистика, сколько кадров из какого видеопотока используется, и очень интересная переменная, названная автором diff threshold. Эта цифра представляет собой некий коэффициент определяющий разницу между полученным изображением и исходным. По утверждению автора, всё что ниже 11000 означает практически идеальное качество, от 11000 до 12000 приемлемое. Выше 12000, качество не столь хорошо, как хотелось бы, и лучше увеличить размер файла, но получить лучшее качество. Изменив размер, снова нажмите кнопку Recalculate, и все значения изменятся. Таким образом можно подобрать оптимальный размер файла исходя из значения diff threshold. После этого останется вновь нажать на Next, и вы получите готовый файл с изображеним. Если качество полученного фильма вас не удовлетворяет, то всегда можно открыть проект заново (при старте FairUse выбрать опцию Open an existing project), и переделать его с другим размером файла, и с другим diff threshold.
Останется только наложить звук. Вытащить звуковую дорожку из фильма можно с помощью, например, ac3dec, описанного выше, или какого либо другого инструмента, про то как свести звук и видео вместе, будет описано ниже.
Прежде чем продолжить работу - определитесь, хотите ли вы иметь звук в AC3 формате в итоговом фильме (что будет расточительством, с точки зрения размера итогового файла), или в чём-либо более экономном. От этого зависят дальнейшие действия. Обычно, *.ac3 дорожку сначала переводят в *.wav формат, и потом уже с ним работают. Для этого можно воспользоваться уже знакомой нам утилиткой
. Её возможности весьма широки, что можно было видеть из описания её настройки в mpeg2avi GUI, но для того что бы просто перевести AC3 в *.wav, достаточно всего одного ключа:

Ac3dec ИмяФайла.ac3 -out ИмяФайла.wav
Так или иначе, вы имеете несколько файлов с видео и звуком, всё что теперь требуется, это объединить их.

Этап третий.


Итак, в результате всех вышеперечисленных действий, в зависимости от того, каким из способов вы воспользовались, у вас имеется либо готовый фильм, и ничего больше не надо делать, либо готовый фильм, в котором есть проблемы с синхронизацией. Либо просто набор файлов, отдельно видео, отдельно звуковая дорожка, может быть даже разбитые на несколько кусков.

Возможен вариант, когда вас не удволетворяет качество полученного изображения. Наиболее очевидным решением этой проблемы, является полная перекодировка всего фильма заново, изменив либо битрейт, либо разрешение, либо и то и другое сразу. Но, с другой стороны, не хочется сильно увеличивать размер файла. Ситуация кажется безвыходной. Но это не совсем так.

Обсуждая варианты кодеков я говорил, что бывает Low Motion и High Motion кодек. Различаются они тем, что при использовании Low Motion кодека битрейт постоянно остаётся неизменным, и его часто не хватает на быстро меняющихся сценах, зато спокойные сцены кодируются с великолепным качеством. High Motion кодек напротив, меняет битрейт при увеличении потока данных, поэтому динамичные сцены кодируются с более высоким битрейтом и качеством. Оборотной стороной процесса является то, что во время спокойных сцен битрейт падает сильнее, чем нам хотелось бы, и их качество получается существенно хуже. То что мы хотим сделать, это взять лучшее с одного и другого режима, то есть иметь стабильный битрейт в спокойных сценах, и более высокий в динамичных. В теперешней версии Divx нет возможности толком настраивать эти параметры, будем надёятся, что в будущем они появятся. Но, тем не менее, при определённом желании это можно поправить уже сейчас. Основная идея проста. Фильм кодируется два раза, один раз с использованием Low Motion режима, и ещё раз с использованием High Motion. После этого, с первого варианта вырезаются спокойный сцены, со второго динамичные, и то что получиться склеивается вместе. Всё что требуется, это изменить тип кодека в заголовке файла. Делается это любым HEX editor'ом, найдя стринг div4 или div3. Означают они Fast Motion кодек или Low Motion кодек соответственно, и всё что надо сделать, это убедиться в том, что во всех частях, которые планируется клеить, тип кодека называется одинаково. Саму склейку и резку можно, конечно же, делать с помощью VirtualDub, который будет описан ниже, но в силу его особенностей, про которые так же будет упомянуто ниже, он далеко не лучший выбор, когда приходится работать с большим количеством частей одного фильма, и лучше делать это чем-нибудь более продвинутым, и увы, не бесплатным.

Однако, резать фильм на куски вручную, выбирать различные участки и сводить их, занятие весьма утомительное, даже когда имеется всего лишь два файла, над которыми надо работать. А ведь очевидно, что если закодировать фильм с большим количеством кодеров и настроек, то можно добиться ещё меньшего размера файла, и ещё более высокого качества. Однако, объём работы, который придётся проделать для этого такой, что страшно даже приступать. Неужели нельзя этот процесс как-нибудь автоматизировать? Конечно можно, и соответствующее программное обеспечение уже написано. Одной из самых удобных, и в то же время одной из самых мощных программ, которые занимаются этим, является