1. Установка программ.
Скачайте и установите необходимое программное обеспечение. Для кодирования в формат MP4 нам нужно установить кодек DivX Pro последней (или предпоследней) версии, важно чтобы это был стабильный и проверенный релиз. Для обработки и редактирования видео нам нужно установить т.н. фреймсервер (он же скриптовый язык с набором фильтров) AviSynth (сокращение от AVI SYNTHesizer).
Кроме того, нам понадобятся следующие программы:

- DVD Decrypter - для записи содержимого DVD-диска на винчестер;
- DVD2AVI (или ее обновленная версия - DGIndex) - выделение звука и создание проекта для дальнейшей обработки видео;
- AvsTweak - для создания и отладки AVS-скритов и расчета битрейта;
(примечание: для рассчета битрейта можно также воспользоваться битрейт-калькулятором, встроенным в кодек DivX)
- VirtualDubMod - для собственно кодирования в MP4
Подразумевается, что звук на DVD-диске присутствует в формате AC3.




2. Копирование DVD-видео на винчестер с помощью DVD Decrypter, создание проекта в DVD2AVI.

2.1.
Копирование DVD-видео на винчестер.

Вставьте DVD-диск и запустите DVD Decrypter. Переключите меню Mode в режим IFO и откройте вкладку Stream Processing. Здесь (1) содержится ценная информация о типе видео-потока (PAL, 4:3), о количестве и порядке следования аудио-потоков и о наличии субтитров, которая нам в дальнейшем может пригодиться. Кстати, если запускать DVD Decrypter в этом режиме, то он записывает информацию о потоках в файл ("VTS_01 - Stream Information.txt").




Укажите папку назначения (2) и нажмите кнопку "Пуск" (3).
Если не удается заставить DVD Decrypter захватить за один раз весь DVD-диск (например, в случае с многосерийными фильмами), то можно использовать вместо режима IFO режим File. В этом режиме DVD Decrypter перенесет с диска на винчестер все файлы (правда в этом режиме DVD Decrypter почему-то не создает информационный TXT-файл).



2.2. Создание проекта.

Для создания т.н. файла проекта можно использовать утилиту DVD2AVI. Однако рекомендуется использование модификации этой программы, сделанной Дональдом Графтом и названной им DGIndex. К гайду прилагается именно эта модификация. Отличия в интерфейсе (как вы можете убедиться на скрин-шотах) между программами минимальны (слева шоты DVD2AVI, справа - DGIndex).
Запустите программу. Откройте первый из VOB-файлов фильма: обычно первый VOB-файл фильма это "vts_01_1.vob", а в нулевом VOB-е "Vts_01_0.vob" находится меню или реклама. Остальные VOB-ы в DVD2AVI добавятся автоматически. В DGIndex можно выбрать в меню File > Autoincrement Open или, действуя через Open нажать затем ADD AUTO и указать на следующий по порядку файл (vts_01_2.vob). Если указать на первый, то в список попадут два первых VOB'а (как видно на картинке справа):


Если фильм состоит из нескольких отдельных серий, то их придется загружать и обрабатывать по-отдельности. Убедитесь, что настройки в меню Audio таковы (они и должны быть такими по умолчанию, по крайней мере, в DGIndex не нужно вообще трогать никаких настроек, жмем сохранить проект и все!):








При необходимости укажите на нужный вам аудио-поток - Track Number. Потоку 0x80 соответствует Track1, 0x81 - Track2 и т.д.:


Если в меню будет отмечено галочкой Demux All Tracks DGIndex это настройка по умолчанию), то будут извлечены сразу все аудио-дорожки. Если вы делаете рип для широкой аудитории, желательно не выбрасывать лишние по вашему мнению аудио-дорожки (с английским, немецким, французским и прочими языками). Делайте рип с русским звуком, а остальные треки можно будет приложить к нему в виде отдельных AC3-файлов. То же самое, в принципе, касается и субтитров, но извлечение субтитров в данном гайде не рассматривается.
Теперь в меню File нажмите Save Project, укажите имя файла проекта и папку назначения (сохраняйте для удобства в ту же папку, где лежат файлы VOB, переписанные с DVD-диска), пусть, например, имя проекта будет project (можно, к примеру, давать проектам в качестве имен - сокращения от названий фильмов.), тогда проект запишется в файл "project.d2v".
Вопрос: что произошло в результате создания файла проекта?
Ответ: видео-материал по-прежнему находится в VOB-файлах, выбранный аудио-поток сохранен в отдельный файл в формате AC3, а сам файл проекта "project.d2v" представляет собой своеобразный индексный файл, позволяющий получить доступ к видео, содержащемуся в VOB'ах, как к обычному AVI-файлу, при помощи таких программ как VirtualDubMod

3. Создание AVS-скриптов и их загрузка в VirtualDubMod. Итак, для доступа к видео-материалу мы создали файл проекта. Теперь необходимо обработать видео, хранящееся в VOB'ах в соответствии с нашими пожеланиями. Для решения этой задачи мы пользуемся AviSynth. AviSynth - это фреймсервер - программная прослойка между видео-материалом и программой-кодировщиком. Кроме того, это специальный скриптовый язык высокого уровня с набором разнообразных фильтров для решения задач обработки и редактирования видео.

3.1. Создание срипт-файла и загрузка его в VirtualDubMod.Создадим простейший срипт-файл. На самом деле это обычный текстовый файл, содержащий строки-команды AviSynth. Как создать такой файл? Очень просто: при помощи Блокнота (или, скажем, WordPad'а). Запустите Блокнот и наберите в нем следующую строчку текста:
mpeg2source("project.d2v")
Этой строчкой должен будет начинаться каждый наш скрипт-файл. В нижеприведенных примерах эта строка для простоты будет опущена. Сохраните этот файл в папку, где лежат VOB'ы под именем "project.avs" (или под именем, ассоциирующимся с названием фильма).
Теперь можно запустить VirtualDubMod и открыть в нем созданный скрипт-файл (File -> Open video file):

Теперь, с помощью AVS-скрипта, видео-материал станет доступен для редактирования и сжатия:

Двигая бегунок (1), пройдитесь по фильму. Обратите внимание на наличие, либо отсутствие признаков интерлейса (гребенки - (2)) в сценах с движением, гостинга (ghosting) - раздвоенных фигур, а также на качество видео-материала - наличие шума, царапин, недостаточную контрастность, неестественные цвета и тому подобное. Кроме того, вы наверняка заметите на видео-кадрах присутствие нежелательной темной (и, возможно, неровной) окантовки по краям (3). Она может присутствовать и сверху и снизу, и с боков. Более того, на отдельных кадрах она может пропадать, а на других - появляться или менять размеры. Может также присутствовать искажение пропорций в кадре (в виде, например, вытянутых или сжатых лиц у людей). Все эти недостатки нам предстоит устранить с помощью AviSynth.

3.2. Встроенный редактор скриптов.

В новых версиях VirtualDubMod появился простой встроенный редактор скриптов. Чтобы вызвать его, выберите в меню Tools пункт Script editor:

Появится окно редактора, в котором вы сможете править скрипты, не выходя из VirtualDubMod:

Чтобы перезагрузить отредактированный скрипт, нужно в меню File редактора выбрать пункт Save & Open as AVI:



3.3.
Утилита AvsTweak.
Утилита AvsTweak специально написана для облегчения работы с AVS-сриптами. Она позволяет автоматически создавать скрипты, редактировать их, добавлять фильтры нажатием кнопки мышки, а также такими продвинутыми функциями как: поиск и устранение интерлейса, поиск и выполнение кропинга, выполнение ресайза. Кроме того, в AvsTweak встроен мощный и точный калькулятор, который может расчитать битрейт с учетом пережатия финальных титров:

Кнопкой AVS можно открыть AVS-скрипт файл, а кнопкой D2V (1) можно открыть файл проекта (при этом простейший скрипт-файл будет создан автоматически). В окне (2) можно редактировать скрипт, а кнопкой ReLoad перезагружать его. В окне (3) перечислены наиболее часто употребляемые команды (фильтры) AviSynth, которые можно вставлять и удалять из скрипта простым щелчком мышки. Трек-бар (5) служит для перемещения по кадрам.


4. Избавляемся от интерлейса..
Цель, которой мы будем добиваться на данном этапе не только устранение этого явления, связанного с переходом от чересстрочной кино-развертки к прогрессивной-компьютерной. Попутно нам, возможно, придется заняться нормализацией частоты следования и структуры кадров видео-потока. Здесь возможны несколько вариантов.

4.1. "Неинтерлейсный" PAL.
В этом случае нам ничего не нужно делать на данном этапе написания AVS-скрипта. Такое видео встречается довольно часто и окончательный AVS-скрипт в таком случае может выглядеть очень просто, например, так:
mpeg2source("project.d2v")
crop(8,8,4,-4)
BicubicResize(640,480)

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

4.2. "Интерлейсный" PAL.
В этом случае пробуем несколько вариантов устранения интерлейса. Результат может быть также разным. Либо все варианты работают и существенной разницы между ними нет. Либо какой-то вариант сработает лучше. Либо ни один из них не поможет.
Но начать нужно с определения порядка следования полей в исходном видео-материале. Что такое поля, зачем они и почему так важен их порядок - эти вопросы мы опустим, а собственно процедура определения порядка полей подробно описана на отдельной странице: Определение порядка следования полей. Внимание! Далее во всех скриптах, где требуется указать порядок полей нужно вместо "х" подставить определенный вами порядок: 0 или 1.
При использовании утилиты AvsTweak для определения порядка полей нажмите последовательно кнопки TFF (5) и BFF. Соответстующие скрипт-файлы, призванные помочь определить порядок полей будут созданы и загружены автоматически. После определения порядка полей установите указатель порядка полей (6) в нужное положение (вверх - "0", вниз - "1").
Чтобы опробовать варианты устранения интерлейса нужно добавить в AVS-файл следующую строчку (вместо "x" должен стоять порядок полей!):
Вариант 1 (Telecide без пост-обработки; Telecide - часть мощного плагина Decomb, автор - Donald A. Graft):
Telecide(order=x,post=0)
Вариант 2 (Telecide с пост-обработкой):
Telecide(order=x,post=2)
Вариант 3 (TomsMoComp - Motion Compensating Deinterlace Filter, автор - Tom Barry):
TomsMoComp(x,5,1)
Вариант 4 (Telecide + TomsMoComp - иногда такая комбинация позволяет справиться с интерлейсом лучше, чем каждый фильтр по отдельности):
Telecide(order=x,post=0) - или post=2
TomsMoComp(x,5,1)

Вариант 5 (ависинковский FieldDeinterlace - в особо запущенных случаях, когда PAL-видео 25 Fps было получено из 24 Fps, Telecide и TomsMoComp дадут рывки, а FieldDeinterlace сделает поплавнее, но увы, ничего не поделаешь - останется гостинг)
FieldDeinterlace()
Возможно вам удасться добиться удаления интерлейса и спервой попытки, в противном случае сделайте все варианты этих скриптов и откройте их в VirtualDubMod'е. Если проблемы не пропали, то, возможно вам встретился один из тех тяжелых случаев, когда или добиться хорошего результата просто невозможно, или же это требует гораздо большего времени и знаний.
При использовании утилиты AvsTweak для вставки и удаления фильтров в скрипт нажимайте на соответствующие чек-боксы в окне (3) и жмите после этого кнопку ReLoad. Перед этим рекомендуется выполнить поиск интерлейсного кадра кнопкой Test Interlace. Кнопка Deinterlace позволяет немного автоматизировать процесс деинтерлейсинга.

4.2. NTSC.
Пишем и открываем в VirtualDubMod'е (или в AvsTweak) следующий скрипт (назовем его NTSC-1):
Telecide(order=x,post=2)
Decimate(5)

Примечание: по мнению авторитетных риперов, считается обязательным приведение фреймрейта для NTSC-источника (29,97 fps) к 23.976 fps. Выполняется это командой Decimate(5), которая выбрасывает из видео-потока дублирующий пятый кадр. Исключение составляют случаи с "кривым" исходным видео, где при применении Decimate появляется дерганье изображения. Мы рассматриваем только нормальные случаи, поэтому Decimate в скриптах обработки NTSC-видео всегда присутствует.

Если интерлейс остался, либо присутствуют небольшие подергивания на статичных сценах (например, при движении рук), но при поворотах камеры движения в кадре плавные, то пишем другой скрипт (NTSC-2):
Telecide(order=x,post=1)
TomsMoComp(x,5,1)
Decimate(5)

Если не помогло, заметны подергивания при повороте камеры или полупрозрачные двоящиеся контуры (гостинг), то оставляем в скрипте только эту строчку (NTSC-3):
Telecide(order=x,post=2)
Открываем его в VirtualDubMod'е (в AvsTweak) и смотрим покадрово. И по результатам просмотра имеем четыре варианта действий:
Вариант 1:
В течение 30-ти кадров, нет ни одного повторяющегося - это телевизионная съемка и опробованного скрипта с одной строкой (NTSC-3) вполне достаточно.
Вариант 2:
Каждый пятый кадр повторяется. Значит, решение применить Decimate(5) было верным. Возвращаемся к скриптам NTSC-1 и NTSC-2. Если результаты не нравятся, пробуем также NTSC-5/6.
Вариант 3:
В течение фильма встречаются структуры, описанные в вариантах 1 и 2. Это видео смешанного типа и что бы мы ни делали те или иные фрагменты будут подергиваться. В таком случае из двух вариантов обработки выбираем наименее худший. Рекомендуется закодировать несколько проблемных фрагментов фильма с использованием различных скриптов и сравнить результаты.

4.2. PAL->NTSC.

Вариант 4:
Каждый шестой кадр повторяется (заметить это бывает непросто, скажем 5-й и 6-й кадры могут быть почти идентичны, за исключением изменений типа гостинга - ищите сцены с интенсивным движением!). Мы имеем дело с результатом конверсии PAL->NTCS.
Пробуем такое решение - в скриптах NTSC-1 и NTSC-2 вместо Decimate(5) используем Decimate(6).
Если результат не устраивает, пишем скрипт с использованием в Telecide параметра vthresh (NTSC-4):
Telecide(order=x,post=2,vthresh=z) - здесь значение "z" подбираем примерно от 30 до 150, начать можно с 80-90
Decimate(6)
Если результат неудовлетворительный, пробуем еще два скрипта (NTSC-5):
Bob()
Repal()

или, т.к. Bob иногда лажает (NTSC-6):
SmoothDeinterlace(tff=true,doublerate=true,lacethr esh=y)
Repal()

- здесь tff в зависимости от порядка полей ("0" - tff=true, "1" - tff=false; чем меньше параметр y (по умолчанию = 24), тем сильнее деинтерлейс
Но иногда ничего из этого все равно не помогает добиться приемлемого результата, если конверсия PAL->NTCS была сделана слишком криво.


5. Фильтруем.
Дополнительные фильтры обычно располагаются в самом конце скрипт-файла. Однако шумоподавляющие фильтры нужно ставить после Crop, но до Resize. Если такой фильтр будет применен после Resize, то хоть скрипт и будет работать быстрее, но зато и потеряется намного больше деталей.
Описанные ниже фильтры работают с материалом определенного цветового формата (RGB, YUV, YV12). При несовпадении формата AviSynth выдаст соответсвующее предупреждение. В этом случае достаточно вставить перед фильтром одну из следующих команд конвертации цветового формата:
ConvertToRGB()
ConvertToYUY2()
ConvertToYV12()

5.1. Сглаживание и резкость.

Фильтры MipSmooth и _2DCleanYUY2_for_25. Эти два фильтра хороши для сглаживания видео-потока, удаления из него шума и мелких дефектов. Хотя в фильтре MipSmooth есть настройки для работы как с кино-, так и с анимационным материалом, для анимации лучше все-таки использовать специальный фильтр _2DCleanYUY2_for_25. У фильтра MipSmooth имеется много тонких настроек, но в большинстве случаев достаточно воспользоваться готовым набором "кино"-настроек - пресетом movieHQ. Вызов фильтра из AVS-скрипта в этом случае производится строчкой:
MipSmooth(preset = "movieHQ")
Для фильтра _2DCleanYUY2_for_25 необходимо задать четыре параметра: interlaced, thresholdY, radiusX, radiusY. Например:
_2DCleanYUY2_for_25(0,15,3,3)
В данном случае параметры означают: без интерлейса, коэффициент сглаживания 15, размер сглаживаемой "точки" 3 х 3 пиксела.
Противополжный по действию фильтр Sharpen увеличивает резкость картинки. Используется он обычно тогда, когда в выходной картинке недостаточно четко просматриваются мелкие детали (например, лица). Аргумент может принимать значения от 0.0 до 1.0. Типичное применение фильтра выглядит так:
Sharpen(0.25)

5.2. Яркость, контрастность, цветность.
5.2.1. ColorYUV.


Для регулировки яркости, контрастности, а также для коррекции баланса белого удобно использовать фильтр ColorYUV. В первом примере мы просто равномерно увеличиваем контрастность в каналах Y, U и V:
ColorYUV(cont_y=32, cont_u=32, cont_v=32)
Здесь величина параметра может меняться от 0 до 256.
Во втором примере решалась задача одновременного увеличения яркости, контрастности и корректировки баланса белого для старого черно-белого фильма:
ColorYUV(gain_y=80,cont_y=25,autowhite=true)
В некоторых случаях, для восстановления очень старых фильмов с низким качеством можно использовать также параметр autogain=true. При этом фильтр сам будет пытаться настроить яркость и контрастность наилучшим образом (насколько это возможно) на протяжении всего фильма:
ColorYUV(autogain=true, autowhite=true)

5.2.2. Tweak.

Другой полезный фильтр - Tweak. У него несколько другой набор параметров:
Tweak(hue, sat, bright, cont)
По умолчанию используются следующие величины:
Tweak(0.0, 1.0, 0.0, 1.0)
Hue можно менять от -180.0 до +180.0, sat - от 0.0 до 10.0, bright - от -255.0 до 255.0 и cont - от 0.0 до 10.0.

5.2.3. RGBAdjust.


Если в обрабатываемом видео-материале наблюдается недостаток тех или иных цветов, положение можно исправить, использовав следующий фильтр:
RGBAdjust(red, green, blue, alpha)
В качестве параметров используются дробные числа от 1.0 и выше. Например в случае
RGBAdjust(1.5, 1.5, 1.25, 0)
мы увеличиваем яркость красного и зеленого цвета в 1.5 раза, а синего - на четверть.


6. Кадрирование и размер.


6.1. Croping
(кадрирование).
Для того, чтобы избавиться от темных полос по периметру кадра используется команда Crop. Пример:
Crop(16,40,-16,-40)
В данном случае мы отрезаем слева и справа по 16 пикселов, а сверху и снизу - по 40. Значения этих параметров должны быть кратны 2. Кроме того, видео в формате YV12 (собственно в таком формате и находится видео на DVD) должно подаваться на дисплей со значением ширины кадра, кратной 4. Важно помнить об этом, когда вы занимаетесь именно кропингом, а до ресайза дело еще не дошло, ибо в этом случае после кропинга картинка идет прямо на экран. Если же после кропинга в скрипте уже стоит ресайз, то достаточно кратности 2.
Значения кропинга легко подобрать, редактируя файл AVS, затем сохраняя его и снова перезагружая в VirtualDubMod (например, используя встроенный скрипт-редактор), но так можно ошибиться и отхватить лишнего.
В утилите AvsTweak имеется встроенная функция определения и выполнения кропинга. Нажмите на кнопку Find Light - AvsTweak произведет поиск светлого кадра. Если найденный кадр вас не устраивает, нажмите Find Light повторно. Затем нажмите Test Crop. Если кропинг подобран программой удачно, жмите на Make Crop.
Чтобы подобрать параметры кропинга в VirtualDubMod поступите следующим образом. Также можно воспользоваться возможностями пакета GordianKnot, представляющего собой оболочку "все в одном".

6.2. Resize (пропорции и масштаб).

После кадрирования нужно обязательно сделать ресайз - изменение размера выходного кадра. Ресайз выполняет несколько важных функций: исправляет пропорцию X:Y, приводит размеры X и Y в соответствие с требованиями нормального воспроизведения (X должен быть кратен 32, а Y - 16), производит дополнительное сглаживание картинки. Кроме того, размеры кадра тесно связаны с понятиями (точнее - с их численными эквивалентами) качества и битрейта. Ресайз выполняется командой:
BicubicResize(X,Y)
Исходя из требований кратности 32 по X и 16 по Y несложно построить два ряда значений для ширины и высоты кадра:
- X : 704, 672, 640, 608, 576, 544, 512, 480
- Y : 528, 512, 496, 480, 464, 448, 432, 416, 400, 384, 368, 352, 336, 320, 304, 288
Поскольку, во-первых, пропорции исходного изображения бывают разными (например: 16:9 или 4:3) и, во-вторых, какое-то (в каждом фильме разное) количество пикселей бедет отрезано при кропинге, то выбор правильных цифр из этих рядов, при условии соблюдения правильных пропорций в полученном кадре и надлежащего качества, становится нелегкой задачей.

Вообще говоря, нам достаточно определиться с размером по X. После чего размер Y будет определен нами исходя из необходимости соблюдения правильных пропорций X:Y. При этом нам, возможно, придется выбирать значение Y между двумя соседними числами ряда, одно из которых будет давать чуть меньшую пропорцию, а другое - чуть большую пропорцию, в отличие от идеала. В таком случае, конечно, некоторая погрешность в пропорции X:Y будет неизбежной..., но: во-первых, не всегда - во многих случаях погрешности либо не будет, либо она будет пренебрежимо мала; во-вторых, даже существенную погрешность можно при желании полностью устранить, пожертвовав крайними пикселами кадра, т.е. увеличив значения кропинга по X или по Y (в зависимости от знака погрешности).

Почему мы не можем выбрать размеры кадра произвольно (например по максимуму)? Есть две важных причины почему мы будем ограничены в выборе:
- первая: мы не можем выбрать произволный размер, если мы ограничены в размере выходного файла (например, мы делаем рип, который должен быть записан на 1 CD-диск; или мы делаем рип такого размера, чтобы на DVD-диск поместилось 4 рипа). Логика здесь такая: размер выходного файла и длительность фильма входят в формулу для вычисления видео-битрейта, а видео-битрейт и размер кадра входят в формулу для вычисления качества. Поэтому, если мы хотим получить качественный рип при определенных размерах выходного файла, мы будем ограничены в выборе размера кадра;
- вторая: чем больший размер имеет кадр, тем большую работу должен выполнить процессор, чтобы в реальном режиме времени распаковать и отобразить его. Поэтому, даже если мы не ограничены размером файла, мы не можем выбрать размер кадра по максимуму, иначе сделанный нами рип будет в определенных обстоятельствах воспроизводиться с рывками из-за недостаточной производительности системы (будь то компьютер или стационарный плеер), что неприемлемо.
Таким образом, мы подходим к тому, что прежде чем окончательно выбрать размер выходного кадра, нам необходимо определиться с размером файла, а также участь битрейт аудио-потока, короче, заняться калькуляцией.

7. Калькулируем.
Для принятия правильного решения по выбору видео-битрейта и размера картинки нужно учитывать множество параметров. Длительность фильма и качество исходного материала, динамичность фильма, битрейт звукового потока, цели создания рипа (только чтобы посмотреть, для своей коллекции, для друзей), тип носителя, на который он будет записан.


7.1. Видео-битрейт.

Вначале договоримся о приемлемых границах величины видео-битрейта. Рекомендуется в любом случае придерживаться границ, скажем, от 1000 до 2500 Kbps. Если исходный материал качественный (лицензонный DVD, реставрированное старое кино), то лучше стремиться к величине не меньше 2000.

Конечно, если фильм делается только для себя и будет записан на DVD-носитель, то размер выходного файла, как правило, не так критичен. В этом случае можно выбрать любой приемлемый битрейт. Но в большинстве случаев это не так. Рано или поздно вы решите поделиться фильмом с друзьями, а у них нет DVD-привода. Придется разбивать файл на куски и записывать на CD. Поэтому, чтобы обеспечить некоторую универсальность, давайте следовать правилу, что выходной размер рипа должен быть кратен размеру CD-болванок: 700 Мб, 1400 Мб, 2100 Мб, 2800 Мб, 3500 Мб и т.д. (одно но: для 3-дисковых рипов желательно придерживаться ограничения в 2 Гб для совместимости со стационарными плеерами). Теперь остается только решить на сколько болванок делать рип. Это просто.

Вариант 1: Считаем на пальцах.

Имеем следующие величины: Time - длительность фильма в секундах; ABitrate - битрейт аудио-потока в Kbps; VBitrate - рассчетный видео-битрейт в Kbps; AllSize, ASize, VSize, ISOSize - размеры всего файла, аудио-потока, видео-потока и ISO-области в Мб.

Возьмем, к примеру длительность фильма Time, равную 125 минут = 7500 сек; ABitrate = 448 Kbps; делаем рип на 2 CD, т.о. AllSize = 1400 Мб; размер области ISO считаем приближенно равным 5 Мб * 2 CD = 10 Мб.

Подсчитаем видео-битрейт (приведенные формулы достаточно точны, хотя и не учитывают размер индексной области будущего AVI-файла):

ASize = ((AllTime * ABitrate) / 8 / 1024 / 1024) * 1000 = ((7500 * 448) / 8 / 1024 / 1024) * 1000 = 400.54 Мб
VSize = AllSize - ASize - ISOSize = 1400 - 400.54 - 10 = 989.46 Мб
VBitrate = (VSize * 1024 * 1024 * 8) / (1000 * AllTime) = (989.46 * 1024 * 1024 * 8) / (1000 * 7500) ~ 1107 Kbps

Как видим, в данном случае видео-битрейт получился довольно низким, для некоторых случаев - неприемлемо низким. Поэтому, по результату рассчета можно принять решение об увеличении размера выходного файла (особенно, если речь идет о качественном исходном видео-материале и/или в фильме в изобилии присутствуют динамичные сцены). Повторный рассчет для размера выходного файла 2100 Мб, например, дает уже вполне приличную величину видео-битрейта VBitrate ~ 1890 Kbps.
К счастью, у нас нет необходимости проделывать подобные рассчеты вручную. Для этого существуют специальные битрейт-калькуляторы.
Вариант 2: Считаем на встроенном калькулаторе кодека DivX Pro:


Вариант 3: Считаем на встроенном калькулаторе утилиты AvsTweak.


Вариант 4: Считаем на калькуляторе, встроенном в пакет Gordian Knot.


Кроме того имеется достаточно много отдельных битрейт-калькуляторов, например: DivX Bitate Calculator by Alonzo, Advanced DivX Bitrate Calc by Mick Thunder, AvsCalc by Valky. Как калькуляторы в вариантах 1 - 4, так и эти отдельные калькуляторы пользуются при подсчетах несколько разными формулами, поэтому результаты они могут показывать разные:

- так Advanced DivX Bitrate Calc оперирует формулой для старых DivX-кодеков, полагающей, что 1 Kbps видео-битрейта равен 1024 bps, тогда как в современных DivX кодеках эта величина принимается равной 1000 bps;
- DivX Bitate Calculator значительно завышает битрейт, от значений видео-битрейта, полученных с его помощью приходиться отнимать ~1.5%, чтобы вписаться в заданный размер файла;
- как работает встроенный калькулятор современных DivX-кодеков доподлинно неизвестно, но считает он достаточно точно, практически в ноль;
- калькулятор, встроенный в AvsTweak и калькулятор AvsCalc работают по формулам, приведенным в варианте 1 и немного (примерно на 0.3%) занижают видео-битрейт, в результате при назначенном размере в 1400 Мб получается файл ~ 1396-1397 Мб. Это тоже неплохо, учитывая, что при этом мы получаем некоторую свободу маневра в разбитии файла на части для записи на CD.
Несколько дополнительных замечаний по рассчетам:

1. Длительность фильма узнать просто: откройте AVS-скрипт в VirtualDubMod'е и сдвиньте бегунок в крайнее правое положение; внизу в скобках за номером фрейма увидите время. Другой вариант: запустите медиа-плеер и откройте в нем либо тот-же AVS-файл, либо файл звукового потока AC3.
2. Величина аудио-потока прописана в названии звукового файла AC3 (например в файле "Sample AC3 T01 3_2ch 448Kbps DELAY 2027ms.ac3" содержится 5-канальный аудио-поток с битрейтом 448 Kbps и величиной задержки 2027 ms).
3. Если в фильме присутствуют долго идущие титры (обычно в конце фильма), то их можно сжать отдельно с существенно меньшим видео-битрейтом. Сэкономленный битрейт при этом перейдет в основную часть фильма. Иногда это помогает вписаться в нужный размер файла. Кстати, калькуляторы AvsTweak и AvsCalc позволяют рассчитывать видео-битрейт с учетом пережатия титров.
4. Существуют программы (например, Sonic Foundry Soft Encode) для пережатия потока AC3 в поток с меньшим битрейтом. Такая программа может пережать поток с битрейтом 448 Kbps в поток, скажем, 320 Kbps без существенной потери качества. Высвобожденный битрейт опять же пойдет в видео-поток.

7.2. Размер кадра и фактор качества.

Итак, мы сделали предварительный расчет видео-битрейта. Осталось определиться с размером кадра и узнать какое мы при этом получим качество видео-потока. Если качество будет неудовлетворительным нам придется либо увеличивать видео-битрейт (что не всегда возможно), либо уменьшать размер кадра. Фактор качества измеряется в единицах Bit / Pixel и вычисляется по следующей формуле:

Quality = VBitrate * 1000 / (Fps * XSize * YSize), где VBitrate - видео-битрейт, Kbps; Fps - частота кадров; XSize * YSize - размер кадра

К сожалению, не все калькуляторы вычисляют фактор качества. Из перечисленных выше калькуляторов фактор качества умеют подсчитывать только Gordian Knot, а также AvsTweak и AvsCalc.

Какое значение фактора качества считать "правильным" сказать трудно. В какой-то степени ответ зависит и от назначения рипа. Рискнем установить в качестве нижней границы значение в 0.2. Рипы с качеством меньшим 0.2 будем считать рипами неприемлемо низкого качества. А в качестве границы, к которой желательно стремиться, рискнем предложить величину, равную 0.3.

Из формулы видно, что на качество влияют в одинаковой степени и размер X и размер Y. В первую очередь, как уже говорилось, необходимо определиться с размером по горизонтали (X). Не рекомендуется делать этот размер большим, чем 640. Да и это значение рекомендуется использовать только тогда, когда качество исходного материала высокое, а выбранный битрейт вполне ему соответствует (скажем, в районе 2000 KBps и выше). Меньшие значения размера получаем, отнимая от 640 значение кратности - 32. Таким образом, имеем для X следующий ряд значений:
640, 608, 576, 544, 512
С размером Y определиться проще. Он должен быть, во-перых, кратен 16 и, во-вторых, в кадре не должно наблюдаться искажения естесственных пропорций. Из условия кратности получаем ряд значений:

480, 464, 448, 432, 416, 400, 384, 368, 352, 336, 320, 304, 288

Для проверки отсутствия искажений можно:
- применить инструментальный метод - запустить DVD-плеер (например, PowerDVD), открыть в нем VOB-файлы с фильмом и измерить линейкой размеры (вертикаль и горизонталь) светлой части кадра, узнав эту пропорцию, нетрудно для размера X подобрать наиболее подходящее значение Y;
- открыть подготовленный AVS-скрипт файл, содержащий команду "BicubicResize()" в VirtualDubMod или в AvsTweak и
просканировать фильм в поисках любого круглого предмета: колесо автомобиля, светильник, дуло пистолета и т.п., наконец, в голливудских фильмах в конце титров присутствует знак Киноассоциации с кружком внутри; если не доверяете глазомеру, скопируйте кадр из VirtualDubMod (меню Video->Copy source frame to clippboard или Ctrl+1) и вставьте в Photoshop, увеличьте и проверьте округлость с помощью инструмента выделения (режим эллипс с фиксированным соотношением сторон); на картинке ниже видно, что Киноассоциацию явно плющит:



Утилита AvsTweak имеет встроенные стредства, помогающие определить (правда, тоже на глазок) правильность пропорций круглых предметов в кадре. В случае малейших сомнений не поленитесь и поработайте с линейкой или с фотошопом.
Особый случай - видео-материал с высоким значением Aspect ratio (отношения X к Y), далеким от компьютерно-мониторного 4:3 (например, с Aspect ratio равным или большим 1.85). В этом случае результатом рипа может стать т.н. амбразура (узкая полоска в середине экрана с большими бесполезными полями сверху и снизу). Амбразуры с соотношением сторон хуже, чем 640 x 288 однозначно не приветствуются.
Чтобы частично избежать этого неприятного результат рекомендуется увеличить значения кропинга слева и справа. Увеличивайте кропинг в диапазоне от 4 до 40 пикселей с каждой стороны, ориентируясь на свой вкус и чувство меры и чтобы не пострадала информативность киноряда и за кадром не остались важные детали. Попутно, манипулируя значениями кропинга по X, можно также решить задачу точного попадания в требуемую пропорцию X:Y. Но это уже почти из области фантастики



8. Сжимаем.

8.1. Настройка кодека.

Запускаем VirtualDubMod и открываем наш AVS-скрипт-файл (меню File->Open video file):

Идем в меню Video, устанавливаем режим Fast recompress, затем открываем Compression:

В меню Select video compression выбираем из списка кодеков наш кодек Divx 5.2.1 Codec, после чего нажимаем кнопку Configure:

В открывшейся первой страничке настройки параметров кодирования (General) нас интересуют в первую очередь три вещи:
(1) - режим кодирования, задающий соотношение скорость/качество - Encode Performance
(2) - значение видео-битрейта - Average bitrate
(3) - режим кодирования, задающий число проходов - Encode mode

Чем выше все эти три параметра, тем выше будет качество рипа. С битрейтом мы уже определились, остается выбрать соотношение скорость/качество и число проходов. Настройками по умолчанию выставлены режим Standard и "однопроходный" (1-pass) режим, но эти настройки не годятся для рипов высокого качества!
Если вам необходимо высокое качество рипа ставьте режим кодирования Slow. То же самое касается и многопроходных режимов кодирования. Так, добавление второго прохода существенно улучшает качество результата за счет лучшего перераспределения битрейта между различными по динамике сценами фильма. При этом мы получаем не только лучшее воспроизведение динамичных сцен, но и более высокий коэффициент сжатия. Но второй проход также и увеличивает время кодирования в два раза. Иногда применяется и большее, чем 2 число проходов - в случае, если следующие проходы (3-й, 4-й) влияют на результат, либо если требуется точное попадание в размер выходного файла.
Общая рекомендация такова: если вы делаете фильм только для себя, у вас недостаточно быстрый процессор, ограничено время, короче говоря, лишь бы побыстрее сделать, тогда оставляйте режим 1-pass. В остальных случаях всегда делайте 2-х (и при необходимости более) проходные рипы. У вас также есть возможность попробовать закодировать несколько тестовых фрагментов фильма в разных режимах и сравнить качество результата.
Еще одна тонкость в настройке связана с величиной максимального битрейта (Max bitrate). По умолчанию, для текущего профиля Home Theater значение Max bitrate установлено равным 6951.2 kbps и его невозможно изменить (см. картинку выше). Однако для лучшей совместимости рипа со стационарными DVD-плеерами рекомендуется уменьшить это значение до 4500 kbps. Чтобы сделать это, нужно во-первых отключить профили. Жмем на кнопку Select DivX Certified Profile (4). В появившемся окне Step 1 of 2 - Select a DivX Certified profile убираем галочку с DivX Certified:

Нажимаем кнопку Next, а на следующем окне (Step 2 of 2...) кнопку Finish:

После этого мы возвращаемся в General окно настроек кодека и теперь можем задать необходимую нам величину Max bitrate:

Обратите внимание, что если вы после этого будете менять значение Average bitrate, то и Max bitrate также снова изменится (так уж решили создатели DivX), поэтому после настройки Average bitrate следует снова установить значение Max bitrate = 4500.

8.2. Настройка многопроходного режима и кодирование.

Для задания многопроходного режима выберите сперва Encode mode = Multipass, 1st pass:

В последующих проходах выберите Encode mode = Multipass, Nth pass:


Если текущий (2-й, 3-й,...) проход не является последним, оставляем галочку Update log file:

Если проход последний, убираем галочку (впрочем, если забудете убрать, ничего страшного не случиться):

На второй страничке настройки параметров кодирования (Video) в основном оставляем параметры в указанном ниже состоянии (по умолчанию). Кроме: Scene change threshold, если эта опция доступна (зависит от режима), делаем 20%; Max Keyframe interval - этот параметр делаем равным 150-200.

Настроив параметры кодирования, нажимаем ОК внизу окна настройки параметров и еще раз ОК в окне Select video compression. Теперь чтобы начать кодирование идем в меню File и выбираем Save As...:

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

Кодирование же в 2 прохода делается так. Сначала задаем в настройках кодека 1-й проход, идем в меню Save As..., задаем имя файла для первого прохода - ((1) - например, "Movie-Pass1") отмечаем галочкой Don't run this job... - (2) (в старых версиях программы - Add operation to job list...) и жмем Сохранить:

При установленной галочке Don't run this job... кодирование заданного прохода не начинается, вместо этого задание на кодирование попадает в список отложенных заданий (Job Control).
Далее мы задаем в настройках кодека 2-й проход, (в новых версиях программы для это можно воспользоваться кнопочкой Change - (3)), возвращаемся в меню Save As..., задаем имя файла для второго прохода (например, "Movie-Pass2"), убеждаемся, что галочка Don't run this job... отмечена и еще раз жмем Сохранить.
Аналогично поступаем, если проходов больше. Не забудьте только для каждого прохода задать соответствующее имя файла. После того, как все проходы таким образом внесены в список отложенных заданий, идем в меню File -> Job cintrol:

Указываем на первое внесенное нами в список задание и нажимаем Start:

По завершению кодирования всех заданий, нажаем ОК. На этом кодирование видео завершено. Смотрим полученный в результате последнего прохода AVI-файл и если все ОК - переходим к приклейке звука.
8.3. Кодирование пробных фрагментов.
Для кодирования произвольного фрагмента фильма необходимо отметить начало и конец фрагмента кнопочками, расположенными под полосой прокрутки. Кнопкой (1) отмечаем начало фрагмента, а кнопкой (2) - конец:

Далее кодируем фрагмент точно так же, как описано выше применительно ко всему фильму.


9. Приклеиваем звук.
В меню File->Open video file открываем файл с результатом кодирования последнего прохода видео. Идем в меню Video и устанавливаем для видео режим прямого копирования (Direct stream copy):

В меню Audio выбираем пункт AC3 Audio (если вместо меню Audio вы видите Streams, значит у вас более современная версия VirtualDubMod, там нужно действовать немного иначе, смотри описание ниже):

В открывшемся окне выбираем AC3-файл с аудио-потоком, потом в меню Audio нажимаем Interleaving...:

Настраиваем параметры интерлива так, как показано ниже, за исключением окошечка ввода Delay audio track by - сюда заносим величину задержки аудио-потока из названия AC3-файла (т.е., если файл назывался "Sample AC3 T01 3_2ch 448Kbps DELAY 2027ms.ac3", то в окошко Delay... заносим число 2027. Обратите внимание на то, что это значение может быть также и отрицательным, в таком случае название файла было бы "Sample AC3 T01 3_2ch 448Kbps DELAY -2027ms.ac3" и в окошко Delay... нужно было бы занести число -2027.

Если у вас установлена свежая версия VirtualDubMod, то для приклейки аудио-потока нужно идти в меню Streams и выбрать там Stream list:

В открывшемся окне жмем кнопку Add:

В открывшемся окне выбираем AC3-файл с аудио-потоком. Теперь мы видим этот файл в списке потоков. Указываем на него мышкой и жмем правую кнопку, в появившемся меню нажимаем Interleaving...:

Параметры интерлива настраиваются также, как и в старой версии программы.
После того, как мы выбрали аудио-поток и настроили интерлив, можно наконец сохранить фильм уже со звуком в новом файле. Для этого опять идем в меню File -> Save as AVI..., задаем имя файла для фильма и жмем Сохранить. На этом наша работа по созданию рипа окончена.


10. Резка фильма на части.
Если полученный фильм нужно разрезать на части (например, для записи на CD), откройте его в VirtualDubMod, установите меню Video в режим Direct stream copy) и отметьте первую часть фильма. Резать теперь можно только по ключевым кадрам - используйте для движения по ним стрелочки с ключиком:


Размер от начала файла в мегабайтах можно увидеть на информационной панели VirtualDubMod справа от навигационных кнопок:


Cохраните отмеченное в отдельных файл. Если не попали в размер CD-болванки, придется подкорректировать позицию конца фрагмента и попробовать еще раз. Затем отметьте следующую часть и сохраните ее в другой файл.
Старайтесь по-возможности разрезать фильм так, чтобы разрез попадал на смену сцен в кадре. Обычно на этом месте находится и ключевой кадр.

End!