= Настройка и использование кодека XviD 1.1.0 beta 2 =

Главное окно настроек энкодера

Profile @ Level – здесь выбираем стандартные профайлы, выбирается только если потом надо будет проигрывать сжатый файл на стандартных MPEG4 плеерах. Для всех остальных случаев выбираем (unrestricted). Кнопка “more…” открывает окно настройки профайлов.

Encoding type – тип кодирования. Бывает Single pass АКА однопроходный режим и Two pass (1st pass и 2nd pass) АКА многопроходный режим. Однопроходный режим годится только для кодирования на лету (для захвата видео) или если важна скорость. Многопроходный режим кодирования работает так: сначала кодек кодирует файл как в однопроходном режиме, но вместо *.avi а генерит лог-файл, который потом анализирует во втором проходе. Благодаря этому в двухпроходном режиме более рационально распределяется битрейт. Кнопка “more…” открывает окно подробных настроек выбранного режима.

Target bitrate/Target size – нажатием на кнопку переключается способ расчёта битрейта видео. В поле рядом нужно вводить битрейт видео или его конечный размер. Кнопка “calc” вызывает окно калькулятора, в котором, например, можно расчитать битрейт для фильма, который необходимо уместить на один диск. Битрейт фильмов обычно колеблется от 450 kbps до 1000 kbps. Клипов – от 600 kbps до 1500 kbps. Игрового видео (мувиков) от 1800 kbps до 3000 kbps. Чем больше битрейт – тем лучше качество.

Zones – одно из главных преимуществ кодека Xvid – это возможность вручную настраивать энкодер для отдельных зон видеофайла (например grayscale для титров или BVOP sensitivity для high-motion участков). Кнопка “Add” добавляет зону, “Remove” – удаляет выбранную, “Zone Options” – открывает окно настроек выбранной зоны.

Advanced Options – открывает окно дополнительных настроек енкодера.

Load Defaults – сбрасывает все настройки кодека по умолчанию

Decoder Options – окрывает окно настройки декодера.

Окно настройки профайла. Закладка “Profile”

Profile @ Level – выбор стандартного профайла для воспроизведения на аппаратных МПЕГ4 плеерах. При сжатии для компа ставить (unrestricted).

Quantization type – выбор таблицы квантизирования. Имхо H.263 – лучше чем MPEG2. Также здесь можно выбрать MPEG-custom чтобы самому настроить таблицу квантизирования или загрузить альтернативную. Влияет в основном на распределение сжатия на картинке. Например MPEG лучше сжимает однотонные поверхности чем границы цветов, а H.263 – наоборот.

Adaptive Quantization – при включении кодек сильнее сжимает однотонные тёмные и светлые поверхности. Полезно включать если видео содержит много чёрного или белого цвета. Например при сжатии в ави записи игры на q3dm17. У меня On.

Interlaced Encoding – обрабатывает фреймы не последовательно, а отдельно каждый. Очень не рекомендуется включать.

Top field first – Эта опция для удаления грёбенки при захвате видео.

Quarter Pixel – Улучшает качество обработки исходного изображения (кодируется с точностью ? пиксела). При включении – жрёт много проца и чуть больше битрейта. Кроме того, для воспроизведения конечного файла понадобится более мощный проц. Я отрубаю.

Global Motion Compensation – При включении кодек лучше сжимает видео, в котором много масштабирования и панорамирования. Пример такого видео – воды по варику/старику. Для воспроизведения понадобится более мощный проц. У меня выключено всегда.

Reduced Resolution – не включать. Лажа. 8)

B-VOPs – Включение этой опции капитально увеличивает сжатие практически без потери качества. Рекомендуется включать категорически! Немного теории:

Виды фреймов

Изначально видео было организовано примитивно (1 на схеме) – совокупность картинок одного типа идущих одна за другой. Потом появилось разграничение Intra и Inter фреймов (2 на схеме). Это когда есть один ключевой кадр, а все остальные за ним – дельта фреймы, которые содержат только разницу от ключевого. Это позволило сильно увеличить сжатие. Введение би-фреймов (bi-directional frames) улучшило сжатие еще сильней (3 на схеме). Би-фреймы получаются методом интерполяции двух близлежайших Пи-фреймов + коректирующая информация. В Xvid впервые была реализована возможность кодрования нескольких би-фреймов подряд (4 на схеме). Такой метод сжатия на данный момент является наиболее прогрессивным и дающим лучшую степень сжатия. Теперь вернёмся к настройкам.

Max consecutive BVOPs – Сколько максимум би-фреймов может быть подряд в конечном видео. Чем статичней изображение в исходном видео – тем больше надо ставить. Я не вижу причин вообще ограничивать это значение – гораздо легче поставить BVOP-sensitivity в настройках зоны в меньшее значение. Однако я ставлю это значение =5.

Quantizer ratio – я не буду долго рассказывать что такое квантизер – скажу только, что чем он меньше – тем лучше качество картинки. Значение этого поля содержит множитель на который множится квантизер исходных Пи-фреймов чтобы получить квантизер Би-фрейма. Увлекаться увеличением этого значения не рекомендуется. Оптимальное значение – от 1,50 до 2,0. Но значения выше 1,75 надо использовать только в том случае, если средний квантизер исходных пи-фреймов не больше 6. У меня это значение = 1,75 для мультипликации (Симпсоны, Футурама, Саус Парк и т.п.), 1,50 для фильмов, клипов и игрового видео.

Quantizer offset – Хммм… лучше приведу формулу B-VOPquant=AVG(prevVOPquant,nextVOPquant)*quant ratio+quant offset. Короче – этой опцией можно слегка подкорректировать среднее значение квантизера би-фреймов для всего видео. Я обычно оставляю в 1,00.

Packed bitstream – практически не влияет на сжатие. включение этой опции сглаживает воспроизведение. Оставлять включенной полюбэ.

Окно калькулятора битрейта

Target size – Сюда вводить нужный размер файла в килобайтах. Например для 700мб диска это 716800.

Subtitles – Размер файла субтитров. Нажав на кнопку “…” можно указать к нему путь и калькулятор сам подсчитает его размер.

Format – Выбрать формат видео, чтобы подсчитать размер заголовка и служебной информации видеофайла. Скорей всего это будет “AVI-OpenDML”.

Video – Длительность и фреймрейт. В графе “size” – появится рассчитаный максимальный размер видеофайла. В графе “bitrate” – рассчитаный битрейт видео.

Audio – Можно выбрать формат и битрейт, но лучше указать путь к уже скодированному mp3 файлу, чтобы калькулятор сам подсчитал битрейт звука.

После заполнения всех граф – жмём Ок и в основном окне настроек уже будет стоять нужный битрейт.

Окно настроек зон кодирования

Start frame # – собственно адрес зоны – номер фрейма можно посмотреть в том-же дабе в строке статистики.

Rate control – управление размером фреймов напрямую. В графе “weight” ставится коефициент, на сколько больше битрейта будет получать эта зона относительно всего остального видео. В графе “quantizer” можно принудительно назначить фреймам этой зоны определённый квантизер. Я предпочитаю не трогать эти значения, так как не вижу в этом нужды. При явной нехватке битрейта в определённых местах можно обойтись настройками второго прохода. Исключение – когда на какую-то часть мува, по какой-то причине кодек распределил мало битрейта.

Begin with keyframe – определяет, будет ли зона начинаться с ключевого кадра. Это для извращенцев – кодек более менее точно определяет места куда нужно всунуть ключевой кадр, а если и ошибается – его всегда можно поправить при помощи Statsreader'a. Полезно вставлять в начале статичных сцен, таких как фиксированные камеры в мувах.

Cartoon Mode – в новой версии режим мультфильма включается в настройках зоны. Незаменимая штука для кодирования анимационных фильмов. Лучше сжимает границы цвета чем закрашенные плоскости. Для мультиков включать, для всего остального – не рекомендую.

Grayscale encoding – вся зона кодируется в чёрно-белом изображении, полезно для титров.

Chroma optimizer – Интерполирует цвета в тёмных/светлых зонах чтобы улучшить качество границ этих зон в сжатом видео. Полезно для анимационных фильмов и на космических картах в кваке.

BVOP sensitivity – Самая полезная и юзабельная фича всей этой менюхи. Чем больше её значение – тем больше би-фреймов будет в сжатом видео. Для high-motion фильмов вещь незаменимая. О том, как подбирать это значение – написано ниже. При значениях меньше нуля – би-фреймов будет очень мало.

Окно дополнительных настроек энкодера. Закладка “Motion”. (Motion – динамика)

Motion search precision – чем больше значение – тем качественней кодек будет искать путей экономии битрейта. Ставить или в 0 для кодирования на лету или в 6 для окончательного сжатия.

VHQ mode – Использовать на максимуме с Motion search precision = 6. Не рекомендуется использовать с Global Motion Compensation и Quarter Pixel. Определяет насколько хорошо будут проработаны векторы движения блоков. Опять-же не включать при кодировании на лету, ибо сильно тормозит тачку. У меня на максимуме.

Use VHQ for bframes too – если включено, кодек прорабатывает векторы движения и для би-фреймов. Включать.

Use chroma motion – Применяет алгоритмы Motion Estimation для цветных блоков. Улучшает сжатие за счёт падения скорости. При окончательном кодировании – включать однозначно.

Turbo ;-) – ускоряет расчёт Motion Estimation при кодировании би-фреймов и Quarter Pixel. Я не использую.

Frame drop ratio – процент кадров, которые будут копироваться из предыдущего. Не рекомендуется трогать.

Maximum I-frame interval – уменьшать нужно, если кодируется на лету, и потом прийдется много резать в дабе. Никаких плюсов кроме увеличения комфорта работы в дабе и небольшого прироста качества нет. У меня 300.

Окно настроек второго прохода

Stats filename – файл в котором хранится результат первого прохода. Менять нужно только если вы пользовались Statsreader'ом, и сохранили результат в новый файл.

I-frame boost – Значение в процентах на которое увеличится размер всех ключевых кадров в видео. Полезно при кодировании с низким битрейтом очень low-motion сцен. При кодировании high-motion видео лучше не увеличивать – всё равно не поможет 8).

I-frames closer than … are reduced by ... (%) – Ключевые кадры, находящиеся друг от друга ближе чем первое значение уменьшаются на второе значение процентов. Например для супер-high-motion видео, где ключевые кадры ставятся практически через два-три фрейма. (Пример такого видео – клип Prodigy “Out Of Space”).

Overflow control strength (%) – немного лирики: кодек XviD имеет неприятную особенность неправильно распределять битрейт по видео (на начало практически всегда попадает битрейта меньше чем на конец). Эта и следующие две опции призваны исправить этот недостаток, попутно увеличив точность соответствия реального битрейта номинальному. То есть – если значение этой опции 0 и номинальный битрейт выставлен в 1000 – то финальный битрейт может быть и 900 и 1100. (реальный битрейт можно посмотреть в окне “Encoding status” после завершения кодирования). Чтобы этого избежать – увеличиваем значение этой опции. Я обычно ставлю в таких случаях 30%-50%. Кстати – чтобы понять завышает ли кодек квантизер в начале видео – просто взгляните на окно статуса во время кодирования. Если реальный битрейт вначале раза в три меньше чем номинальный – увеличиваем эту опцию.

Max overflow improvement (%) – Увеличиваем, если реальный битрейт меньше номинального.

Max overflow degradation (%) – Увеличиваем, если номинальный битрейт меньше реального.

High bitrate scenes degradation (%), Low bitrate scenes improvement (%) – Увеличение этих опции проводит уравниловку – часть данных с самых больших фреймов снимается и распределяется между остальными.


По заявкам трудящихся на ниве мувимейкинга - рассказываю как жать мувы, по пунктам.

на входе имеем:       видео-файл, пожатый loseless кодеком

                  установленный кодек XviD 1.1.0 beta 2 или выше (далее кодек)

                  установленный VirtualDub любой версии (далее даб)

1. Открываем файл в дабе

2. Отключаем звук (Audio->No Audio)

3. Выбираем (Video->Compression)

4. В списке выбираем „XviD MPEG-4 Codec”

5. Нажимаем кнопку “Configure”

6. В окне кодека нажимаем кнопку „Load defaults”

7. Encoding type = Two Pass – 1st pass

8. В свойствах профайла:       Adaptive Quantization = on

                        Max consecutive BVOPs = 5

9. В Advanced options:       VHQ mode = 4-Wide Search

                        Use VHQ for bframes too = on

10. Закрываем окно настройки кодека, всюду жмём „Ок”

11. В дабе: нажимаем „File->Save as AVI”

12. Теперь, когда проходит первый проход сжатия, проверяем правильность настройки би фреймов. На графике фреймов мы видим два столбика – красно-синий (I-VOP+P-VOP) и зеленый (B-VOP). Если зелёный столбик выше красно-синего – значит наше видео низкодинамичное (low-motion) и дальше увеличивать количество би-фреймов нет необходимости. Вместо этого можно уменьшить значение Quantizer Offset в свойствах профайла до 1.00 или даже до нуля (если зелёный столбик выше в два раза). Если же красно-синий столбик выше (чаще всего так и есть) – значит видео высокодинамичное (high-motion) и кол-во би фреймов прийдется увеличить. Для этого, надо поделить мув на зоны, и в самых динамичных из них увеличить параметр „BVOP sensitivity” до 20. Как это делать расписано чуть ниже.

13. Повторяем действия пунктов 10-11.

14. Если зелёный столбик не уравнялся с красно-синим - увеличиваем „BVOP sensitivity” до 30 и повторяем действия пунктов 10-11.

15. Если всё равно зелёный столбик ниже красно-синего – оставляем количество би-фреймов в покое и принимаемся за их качество. В свойствах профайла, в поле “Quantizer Offset” ставим двойку если би-фреймов лишь немного меньше чем пи-фреймов, и тройку если меньше хотя-бы в два раза. Еще раз делаем первый проход.

16. Теперь в главном окне настроек кодека, выбираем Encoding type = Two Pass – 2nd pass

17. Нажимаем на „Target size” чтобы вместо Target size было Target bitrate

18. В поле битрейта вписываем значение 2600. (Для того, чтобы мув вписался в 20мб/мин рамки, если позволяет контент – можно и меньше).

19. Теперь напротив Encoding type нажимаем кнопку “more…” и заполняем поле I-frames closer than … are reduced by ... (%) так: первая цифра = 3 вторая = 75.

20. Если наше видео явл. low-motion (см. пункт 12) - то напротив Encoding type нажимаем кнопку “more…” и в поле „I-Frame boost (%)” ставим „50” (или 100 если очень low-motion).

21. Если наше видео явл. high-motion (см. пункт 12) – то в Advanced Options, на вкладке Quantization в поле Min I frame quantizer вписываем «4» (А если в пункте 15 ставили «3» в оффсет – то можно и 5 или даже 6).

22. в Advanced Options, на вкладке Quantization в поле Max P-frame quantizer вписываем «8».

23. Повторяем пункты 10-11.

В принципе – перед нами готовый, хорошо пожатый мув. Большего сжатия можно добиться применением grayscale, cartoon-mode, chroma optimizer и B-VOP Sensitivity на разные зоны мува. Улучшения качества можно добиться применяя Statsreader для добавления ключевых кадров в критичные места, и увеличением параметров High bitrate scenes degradation (%), Low bitrate scenes improvement (%) в свойствах второго прохода.

Еще пара слов о качестве: чтобы найти оптимальные настройки кодека для каждого мува, нужно отличать хорошо пожатый мув от очень хорошо пожатого. Самым критичнымы параметрами в оценке качества для high-motion мувов является среднее значение квантизера пи-фреймов всего мува (в окне статуса строчка P-VOP, столбец AVG в группе Quant) и среднее значение квантизеров всех фреймов; чем эти значение меньше – тем лучше качество мува (даже если глазу это незаметно). Уменьшить среднее значение квантизера пи-фреймов можно увеличив средний квантизер би-фреймов или увеличив их количество. Если, например, уменьшить максимальный квантизер пи фреймов с 6 на 5 без корректировки остальных параметров – кодек увеличит битрейт самостоятельно, такого нельзя допускать. В общем, оптимальное значение среднего общего квантизера ориентировочно равно 8 при минимальном значении среднего квантизера пи-фреймов. То есть, если в результате сжатия общий средний квантизер меньше восьми – можно попробовать уменьшить за его счёт минимальный квантизер пи-фреймов. Если же после сжатия общий средний квантизер равен 8, а средний квантизер пи-фреймов больше шести – есть смысл подумать над увеличением битрейта мува (еще можно увеличить минимальный квантизер и-фреймов).

Это всё – что касается high-motion мувов, для low-motion общий средний квантизер пи-фреймов не столь важен как общий средний квантизер всех фреймов, и нету особой необходимости возиться с настройками, пережимая мув по двадцать раз.

Теперь, подробнее о зонах и их использовании

Зона – это небольшая часть мува, отличающаяся от остальных частей сложностью картинки или её динамикой. Для начала делим мув на эти самые зоны. Пример деления – интро/фраги/видео-вставки/фраги/аутро/титры. Теперь надо эти зоны сформировать в кодеке. Для этого:

1. В дабе, находим начало зоны и копируем в буфер обмена порядковый номер фрейма начала зоны

2. Заходим в настройки кодека и в главном окне нажимаем "Add"

3. Выделяем новодобавленную зону и нажимаем "Configure"

4. Вводим в поле "Start Frame #" порядковый номер фрейма начала зоны из буфера.

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

Примеры настройки зон

Если возникает необходимость быстро сохранить текущие настройки, чтобы их потом вернуть (особенно это полезно когда в кодек занесено много зон), достаточно просто импортировать ветвь реестра [HKEY_CURRENT_USER\SOFTWARE\GNU\XviD] в файл *.reg - ввести в Пуск -> Выполнить комманду:

regedit /e c:\xvid.reg HKEY_CURRENT_USER\SOFTWARE\GNU\XviD

В итоге в корне диска С: появится файл xvid.reg, Чтобы потом загрузить сохраненные настройки – нужно просто добавить его в реестр.


Вроде бы всё самое основное описал, если непонятно – пишите, стучите…

mailto:rozbrat@gmail.com

ICQ UIN: 244105535

JID: !pandor@micro.net.ua


вернуться назад

Hosted by uCoz