Videorip.info

Учимся кодировать видео и делимся опытом

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Bookmark and Share
Обсуждаем настройки, проблемы и особенности кодирования.

ТЕМА: Особенности кодирования кодеком XviD версии 1.3.X CLI.

Особенности кодирования кодеком XviD версии 1.3.X CLI. 9 года 6 мес. назад #216

  • Tempter57
  • Tempter57 аватар
  • Не в сети
  • Эксперт
  • Сообщений: 66
  • Спасибо получено: 92
Особенности кодирования кодеком XviD 1.3.Х CLI

Рассмотрение вопроса кодирования кодеком XviD обязательно надо начинать со статьи Alex T1000 Кодек Xvid. Основные понятия и настройки
Очень полезно прочесть и Руководство по приготовлению DVD рипов программой VirtualDub-MPEG2 и кодеком XviD, также этот мануал
Теперь после прочтения данного мануала, начнём с того, что в мире XviD мало чего поменялось с момента выхода в свет последнего билда XviD+VAQ by Dark Shikari в 2008 году. Но всё же регулярно выходят пропатченные версии XviD различных разработчиков и у многих рипперов возникают вопросы по кодированию XviD, в особенности где брать пропатченные билды с VAQ, а также особенности разнообразия профилей кодирования в связи с выходом XviD 1.3.0, обновленной уже несколько раз только в 2010 году с новым VAQ, хотя первые версии вышли уже 2 года назад. Поэтому вот и решил указать вам где это можно взять. Многие помнят матрицы квантования Jawor, так вот сей поляк и делает свои пропатченные билды. Скачать их можно здесь.
Кому лень переводить его XviD FAQ, вот вам сокращенный перевод:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Много полезной информации по кодированию XviD с новыми билдами можно подчерпнуть здесь и скачать последние билды различных версий XviD.

===========================================================================

1. Для определения необходимо битрейта для кодирования вашего видео материала воспользуйтесь "Методикой подбора битрейта под ваш исходник для получения оптимального по качеству рипа".

2. Минимальные квантизеры должны быть установлены следующим образом: -imin 2 -pmin 2 -bmin 2 . Для двухпроходного кодирования максимальные квантизеры выставлять специально не надо на низких битрйтах, на высоких это вполне можно сделать, а вот все минимальные лучше установить со значением "2". Фреймы с квантом "2" не будут выглядеть хуже, чем с "1", поскольку алгоритм управления скоростью кодека не всегда справляется с минимальными квантами "1" хорошо и можно получить негабаритный файл на выходе, кроме того с минимальным квантом "1" кодек делает распределение квантов хуже. Прежде всего подобная установка квантизеров выполняется при кодировании в аспект разрешения 4:3.

3. Минимальные квантизеры лучше установить следующим образом: -imin 1 -pmin 1 -bmin 1 при условии, что вы отказались от применения указанной выше методики и вам необходимо обеспечить точное попадание в заданный битрейт или размер.

4. Минимальные квантизеры для однопроходного кодирования должны быть установлены -pmin 1 -bmin 3. Важным условием для попадания в заданный битрейт является установка -pmin 1

5. Максимальные квантизеры нужно ограничить только на однопроходном кодировании, приблизительно до уровня -imax 5 -pmax 5 -bmax 8, иначе на более высоких значениях будут наблюдаться артефакты блочности изображения.

6. Адаптивное квантование распространяется только на P-frames с максимальным квантизером -pmax 3
а) Ключ опции VAQ для версии 1.3.Х имеет вид: -masking 2 с возможностью включения старого адаптивного квантования: -masking 1
б) Ключ опции VAQ для версии 1.2.2 имеет вид: -lumimasking без выбора варианта.
Старая версия VAQ пытается отдать меньший битпоток областям изображения, которые человеческий глаз не в состоянии увидеть достаточно хорошо, что позволит кодировщику потратить сэкономленные биты на более важные части картинки. Качество закодированного материала, привнесенное этой опцией, сильно зависит от личных предпочтений и от типа и настроек монитора, использовавшегося для просмотра (обычно результат выглядит не очень хорошо, если он яркий, или является TFT монитором). Новая версия VAQ взята от кодека x264 и способствует лучшей упаковке p-frames c более низкими значениями квантов. Но вряд ли стоит ожидать от этой опции большой толк. Можно запросто нарваться на артефакты блочности на участках тёмных сцен и сцен с градиентами цветовых переходов. Особого смысла нет применять эту опцию на высоких битрейтах или кодировании с постоянным квантизером 2 или 3.

7. Для максимального попадания в заданный битрейт при однопроходном экспериментальном кодировании настройки кодека по CBR не совсем правильные: -reaction 16 -averaging 100 -smoother 100. Лучше будет их установить -reaction 60 -averaging 28 -smoother 28. При этом разброс в выходном битрейте значительно снизится.
Однопроходный пресет имеет вид:
-bitrate XXXX -qtype 0 -nopacked -metric 1 -reaction 60 -averaging 28 -smoother 28 -max_key_interval 250 -vhqmode 4 -pmin 1 -bmin 3 -max_bframes 2 -bvhq -bquant_ratio 162 -bquant_offset 0 -pmax 4 -bmax 6 -masking 2
Стоит однако учесть, что для улучшения качества p- и b-frames лучше всегда применять -max_brames 2, но для максимальной совместимости со стационарными плеерами рекомендуемая установка -max_brames 1.
РЕКОМЕНДАЦИЯ: Внимательно следите за коэффициентом качества на однопроходном кодировании и не опускайте его ниже 0,2 бит\пиксель иначе из-за верхнего ограничения по квантам на p- и b-frames можно получить перерасход битрейта. Если на выбранном вами разрешении с заданным битрейтом идёт превышение последнего, лучше выбрать пресет с более высоким битрейтом или снизить ваше разрешение или как последний вариант увеличить ограничение максимальных квантов. Считаю, что применять однопроходное кодирование не следует при желании создать качественный рип. Это чистой воды эксперимент и не более. Лучше проведите однопроходное кодирование с постоянным квантизером 2 или 3.

8. Интервал между ключевыми кадрами должен быть 10*fps, т.е., например, для 25,00 fps: -max_key_interval 250

9. Если вы используете -vbvmax 4854000 -vbvsize 3145728 (величина для “DivX Home Theatre” профиля), кодек не будет нарушать ограничения “DivX Home Theatre” профиля. Рекомендуемые установки для второго прохода:
-ostrength 10 -oimprove 10 -odegrade 10 -chigh 15 -clow 7 -vbvmax 4854000 -vbvsize 3145728 -imin 2 -bmin 2 -pmin 2
Для профиля "MTK 6000" необходимо установить -vbvmax 7281300 -vbvsize 4718592.

10. Опцию -qpel желательно пока не включать. qpel увеличивает количество предполагаемых векторов движения, путём повышения точности оценки движения с полупиксельной до четвертьпиксельной. Идея состоит в том, чтобы найти лучшие векторы движения, которые взамен уменьшат битпоток (тем самым увеличивая качество). Однако, векторы движения с четвертьпиксельной точностью требуют большего количества дополнительных бит для кодирования, а векторы-кандидаты не всегда дают (значительно) лучшие результаты. Достаточно часто кодек тратит дополнительные биты на повышенную точность впустую, а взамен получает или вообще ничего, или небольшое увеличение качества. К сожалению, нет способа предсказать возможные улучшения от qpel, так что Вам придется сделать кодирование с ней и без нее, чтобы знать наверняка.
qpel может почти удвоить время кодирования и требует, как минимум, на 25% большей мощности при декодировании. Она поддерживается не всеми аппаратными проигрывателями.. Помните также, что применение -vhqmode 4 -qpel приводят к сбою даже кодека XviD 1.2.2 . Так что применяйте -vhqmode 1 -qpel. Общая рекомендация: отключено

11. Теперь о важном: максимально идущих подряд B-frames. Данной настройкой определяется, последовательность какого количества B-кадров может использовать XviD. Обратите внимание, что максимально возможное количество B-frames предполагает большое расстояние между опорными кадрами. При этом трансформация изображения от опорных кадров будет более трудной и конечное качество более низким. Плохое качество опорных кадров влечет за собой плохое качество и B-frames. Практически, эта настройка проводится под ваши конкретные нужды. Как правило, значения от 1 до 2 выбираются для «естественных», а несколько более высокие – для анимированных фильмов с большим количеством одноцветных участков изображения. Кроме того старые модели стационарных плейеров не поддерживают количество идущих подряд -max_b-frames более 1. Проверьте свой плейер на данную совместимость.

12. Ещё подметил одну особенность с -bquant_ratio, который по умолчанию в XviD для VD составляет 150(1.50), а в CLI версиях 162. Некоторые гуру кодирования рекомендуют установить эту опцию -bquant_ratio 100. При этом значительно возрастает качество B-frames. Аналогичный прирост в качестве B-frames даёт опция: -bquant_ratio 162 -bquant_offset 0. Именно эта установка в настоящее время активно используется при кодировании.
Стоит отметить, что при кодировании довольно качественных исходников типа BD с заданием довольно высокого битрейта при кодировании >1600 кбит\с, лучше удалить ключ -zones 0,q,3.0 в первом проходе и установить ключи -bquant_ratio 100 -bquant_offset 100 в обоих проходах.

13. Ключ для новой опции XviD 1.3.X VHQ metric: 1 - PSNR-HVS-M имеет вид: -metric 1 . Ключ для старой опции VHQ metric: 0 - PSNR имеет вид: -metric 0
Провёл тестирование разных версий XvID: 1.2.1 с xvidvideo.ru, 1.2.1 билд от Koepi, 1.2.2 из состава Megui и 1.3.2 билд от Jawor с -metric 0(старой) и -metric 1(новой). Результат у всех практически одинаков, как по размеру в целом, так и по каждому типу фреймов отдельно, кроме последнего варианта. Качество тоже. Но когда дошёл до тестирования 1.3.2 билд от Jawor с -metric 1, результат оказался следующим:
а) Опция -metric 1 очень прожорливо поедает битрейт, при кодировании с одинаковым битрейтом или с одинаковым квантизером выходной размер файла на 5...8 % больше, чем с -metric 0
б) Опция -metric 1 пожирает весь этот битрейт в сторону лучшей цветопередачи человеческой кожи и всей окружающей гаммы цветов, но при этом увеличивает незначительно радужность изображения и снижается скорость кодирования.
Таким образом можно сказать, что -metric 1 лучше не применять на исходниках с повышенной радужностью изображения: аниме, Cartoon, SATRip и TVRip, материала любого типа камкодеров при съёмке со слабой освещённостью.
Минусов получается от этой метрики тоже хватает. Вероятно от неё по-просту следует отказаться или подключать её при достаточно высоких битрейтах.

14. Матрицы квантования выбирайте лучше стандартные для совместимости: Н263 на низких битрейтах до 900 кбит\с и MPEG для высоких битрейтов с целью улучшения детализации изображения. Хотя моё мнение: матрицу MPEG надо использовать при коэффициенте качества не ниже 0,21 бит\пиксель и только при двухпроходном кодировании. А лучше вообще при битрейте выше 1650 кбит\с перейти на костумную матрицу квантования heini_mr, а при битрейте ниже этого значения применять Sharktooth's EQM v3LR. Для битрейта > 1850 кбит\с стоит уже задуматься от применении матрицы квантования heini_lr_6o9. Помните, что костумные матрицы квантования не поддерживаются большинством железных DVD плейеров, кроме Sharktooth's и heini_mr.
Для убитых или блочных исходников, а также при кодировании в 1 проход лучше остаться ВСЕГДА на матрице квантования Sharktooth's EQM v3LR даже на высоких битрейтах. Это касается и старых мультфильмов Cartoon. Матрица квантования H263, к сожалению, больше склонна к блочности изображения.
На качественных релизах XviD cобственно всё упирается в возможности четырёх типов матриц квантования, которые имеют очень ровные и качественные характеристики и при достаточном битрейте 1600...2050 кбит\с, который должен обеспечить средние кванты не более 3 на I-и P-frames и 4 на B-frames , способны слегка убрать остатки шума самостоятельно и немного пригладить изображение по окружающему фону, не создавая на этом битрейте блочность изображения и сохраняя при этом прекрасную детализацию объектов движения. Это следующие матрицы квантования:
1)Jawor_ZSM.cqm, требующая -I 2 -P 2 -B 3, имеющая наилучшую характеристику для прогрессивного видео, но она к сожалению не поддерживается многими железными плеерами.
2) Sharktooth's EQM v3HR.cqm требует также битрейта 1600...2050 кбит\с, есть поддержка практически всех железных коней, но имеющая ограничение на применение по минимальным квантам 1 и trellis от разработчика, поскольку выдает артефакты на всех версиях и билдах XviD ниже XviD 1.3.3 build 65:
WARNING: It may not work with some standalones (expecially the ones with ESS chipsets).
IMPORTANT NOTE:
- FIXED -
There's a recently discovered bug in Xvid that affects all 1.xx versions with Trellis Quantization.
Some matrices trigger an overflow in trellis causing visible blocking at certain quants. One of them is EQM V3HR (but other matrices where reported as well).
There are 2 workarounds (at least i found those 2 only):
disable Trellis Quantization OR limit the MinQ and MaxQ to 2-31 respectively.
- FIXED -
Многие рипперы пренебрегали этим предупреждением и получали артефакты.
3) heini_mr.cqm -эта матрица квантования родная сестра Sharktooth's EQM v3HR.cqm с чуть улучшенными характеристиками и все предупреждения касаются и её. Данная матрица наиболее часто применяется в рипах повышенного качества всех рипперов здешнего трекера. Обычно битрейт для видео задается 1600...2050 кбит\с с одной звуковой дорожкой 448 кбит\с. При этом суммарный битрейт позволяет обеспечить поддержку большинства железных плееров. Остальные звуковые дорожки просто рядом выкладываются в релизе. На мой взгляд это самая удачная из всех костумнух матриц квантования для битрейтов от 1600 до 1850 кбит\с и в совокупности с -max_bframes 1 и ресайзером bicubicresize(W, H, 0, 0.5), дающая потрясающий результат даже без применения дополнительной фильтрации изображения.
Как я уже сказал ранее, при битрейте >1850 кбит\с стоит уже выбрать матрицу квантования heini_lr_6o9, особенно, если материал исходника представляет собой чистенький BDRemux или HDTV.
4) HVS Best Picture.cqm более редко используется рипперами, но лишена ограничений по вышеуказанным матрицам и дающая тоже прекрасный результат, но на мой взгляд несколько хуже, судя по остаточному шуму и незначительной блочности изображения.
Все четыре типа этих матриц терпеть не могут, когда средние кванты в рипе превышают 4 для I, P-frames и 5 для B-frames.
5) При кодировании полнометражных фильмов в размер 745 МБ рекомендуется применять матрицу квантования Sharktooth's EQM v3LR.

15. Сетчатая (trellis) квантизация является одним из адаптивных методов квантования, который экономит биты изменением значений коэффициента квантования, способствуя достижению более плотного сжатия энтропическим энкодером. При этом достигается
неплохое качество, и если вам покажется, что VHQ сильно нагружает процессор, это будет хорошей альтернативой, которая сэкономит вам энное количество битов (и улучшит качество при условии постоянства частоты), минимально нагружая CPU.
trellis оптимизирует процесс квантования для получения оптимального соотношения между PSNR и битпотоком, что позволяет существенно экономить биты. Эти биты впоследствии будут потрачены на другие части видео, что приведет к увеличению общего качества. Следует оставлять эту опцию включенной, поскольку ее влияние на качество хоть незначительно, но есть.

16. ОБЯЗАТЕЛЬНО отключить упаковку p-и b-frames: -nopacked (об этом официально предупредил Jawor).

17. Motion (Motion search precision /Точность восприятия движения)
Данная опция отвечает за подсистему восприятия движения. Чем выше ее значение, тем более детальным будет восприятие. Чем лучше будет восприятие, тем больше битов сэкономится. Высокая детальность восприятия сильнее нагружает процессор
Величины:
• 0 - None (отсутствует)
• 1 - Very Low (очень низкая)
• 2 - Low (низкая)
• 3 - Medium (средняя)
• 4 - High (высокая)
• 5 - Very High (очень высокая)
• 6 - Ultra High (высочайшая)
Если вам нужно качество, выбирайте 5 или 6. Значение 6 - Ultra High рекомендуется почти для всех случаев, а более низкие следует выбирать лишь для кодирования если вам необходимо как можно быстрее создать рип или для тестового прохода.

18. VHQ mode
В основе алгоритма восприятия движения лежит определение вектора перемещения по данной расцвеченной области, который сводит к минимуму расхождения между опорным и кодированным кадром. Если возможность VHQ активирована, для определения вектора перемещения XviD будет использовать и область частот (DCT, дискретно-косинусоидальное преобразование), сводя к минимуму не только пространственные различия, но и размер закодированного блока. Чем больше значение, тем больше нагрузка на процессор.
Величины:
• 0 - Disabled (отключено)
• 1 - Mode Selection (автоматический выбор режима)
• 2 - Limited Search (ограниченный диапазон восприятия)
• 3 - Medium Search (средний диапазон восприятия)
• 4 - Wide Search (широкий диапазон восприятия)
Высокие значения VHQ понижают коэффициент квантования, повышая тем самым качество. Однако обычно повышение качества не окупается из-за увеличения продолжительности кодирования. Но сильно увеличивается степень компрессии. Значение 4 рекомендуется для фильмов на один CD и длинных фильмов. Для высоких значений потока данных (bitrate, битрейт) рекомендуют использовать низкие (1), особенно в случае, когда минимальные кванты установлены в 2, для низких– более высокие (2 – 4) значения.
В случае достаточного битрейта (коэффициент качества > 0.25 бит\пиксель) опцию -vhqmode 4 можно заменить на -vhqmode 1(по умолчанию). Это позволит немного сократить время кодирования и на мой взгляд чуточку улучшит детализацию изображения.

19. Опция Chroma Motion Estimation
Для определения наиболее подходящего вектора алгоритм восприятия движения обычно использует лишь сведения о яркости (luminance). Некоторые видеорекордеры способны определять наиболее подходящий вектор, используя цветовые (chromatic) уровни. Данная опция включает или отключает использование цветовых уровней для восприятия движения.
Chroma ME включает в расчет вектора перемещения также сведения о цвете. Этим еще больше увеличивается точность восприятия движения. Если вы желаете избавиться от артефактов блочности, то применение этой опции будет вполне оправдано.

20. ВНИМАНИЕ: У кодека XviD существует особенность точного попадания в заданный размер или битрейт, которая зависит от качества и уровня шума исходного видео:
а) Если наш исходник зашумленный DVD, камкодер DV, видеоматериалы спутникового или цифрового кабельного телевидения, то ваш пресет кодирования имеет вид:
video codec:
XviD

video cli:
-nopacked -bquant_ratio 162 -bquant_offset 0 -max_bframes 2 -qtype 0 -vhqmode 1 -max_key_interval 250 -zones 0,q,3,O -quality 5 -nochromame -turbo
-nopacked -bquant_ratio 162 -bquant_offset 0 -max_bframes 2 -qtype 0 -vhqmode 4 -max_key_interval 250 -zones 0,w,1,O -bitrate XXXX  -quality 6 -bvhq -vbvmax 4854000 -vbvsize 3145728 -ostrength 30 -oimprove 30 -odegrade 10 -chigh 30 -clow 15 -imin 2 -pmin 2 -bmin 2
Здесь рекомендуемая костумная матрица квантования Sharktooth's EQM v3LR.

б) Если наш исходник чистый DVD9, BD, HD DVD, HDTV, AVC HD, HDTV, то во втором проходе настроек кодека надо ввести -imin 1 -pmin 1 -bmin 1 -imax 3 -pmax 3 -bmax 5 и пресет кодирования приобретает следующий вид :
video codec:
XviD

video cli:
-nopacked -bquant_ratio 100 -max_bframes 1 -qtype 1 -vhqmode 1 -max_key_interval 250 -quality 5 -nochromame -turbo
-nopacked -bquant_ratio 100 -max_bframes 1 -qtype 1 -vhqmode 1 -max_key_interval 250 -bitrate XXXX -quality 6 -bvhq -vbvmax 7281300 -vbvsize 4718592 -ostrength 30 -oimprove 30 -odegrade 10 -chigh 10 -clow 3 -imin 1 -pmin 1 -bmin 1 -imax 3 -pmax 3 -bmax 5
Здесь рекомендуемая костумная матрица квантования heini_mr или Sharktooth's EQM v3НR при битрейте 1650...1850 кбит\с и heini_lr_6o9 при битрейте > 1850 кбит\с

В случае, если ваш стационарный плеер не поддерживает max_bframes более одного "1", следует в обоих проходах установить -max_bframes 1.

21. Информация о N-Frames.
N-frames представляют собой кадры-пустышки для того чтобы забить место в видеоряде. Основная причина их появления-применение B-frames. Маленькое лирическое отступление:
При сжатии видео используется 3 типа кадров: I,P и B - frames. I-frames - это кадры с очень небольшим коэффициентом компрессии. Их кодер описывает целиком. I-frames так же называются ключевыми кадрами. При просмотре сжатого фильма, вся навигация по фильму производится через ключевые кадры. После I-frames следует последовательность P-frames, например так: IPPPPPPPPPPPPPPPPIPPPPPPP и так далее. P-frames имеют гораздо больший коэффициент сжатия, т.к. в них кодер сохраняет информацию не обо всей картинке, а только о той ее части, которая изменилась по сравнению с предыдущим кадром. Для того, что бы еще больше повысить коэффициент сжатия, были введены B-frames. Они ставятся между двумя менее сжатыми кадрами (I,P-frames). Последовательность получается такой: IPBPBPBPBPBPBPIPBPBPBP… Коэффициент сжатия B-frames больше, чем коэффициент сжатия P-frames. Это достигается тем, что P-кадр сравнивается только с предыдущим кадром, а B-кадр с 2 окружающими его кадрами, и в B-кадре записывается, чем он отличается от них. Но вместе с этим, это накладывает определённые ограничения. Например, видеопоследовательность не может заканчиваться B-frames. Начинаться же видеоряд должен обязательно с I-кадра, т.к. в нём содержится вся информация об изображении. Итак, с B-frames мы можем сильнее сжать видео. Вы спросите, а причём здесь качество? Всё просто. Сильнее сжали, а размеры видео файла у нас те же самые. Этот "освободившийся" поток перераспределяется на все кадры.
Теперь дальше рассказываю о причине появления и смысла N-Vops.
VirtualDub использует кодеки(кодер-декодеры) VFW. VFW основана на модели "one-frame-in -one-frame-out". Программа читает один кадр с сжатытыми данными от исходного файла, подаёт это к декодеру, декодер развертывает кадр и возвращает несжатый кадр программе. Это работает прекрасно с кодер-декодерами, когда все кадры являются ключевыми I-frames или P-frames. Но используя birectional предсказание, на котором основаны B-frames (некоторые кадры кодируют только различие между собой и более поздним кадром видео) кадры не могут быть расшифрованы должным образом.
Не всегда мы имеем дело с последовательностью IPBBPBBPBBP... или IPBPBPIPBPBPBP…
Иногда возникает последовательность кадров типа IBBP. Это - ордер, где они должны быть рассмотрены, сначала I-frame, затем первый B-frames, затем второй B-frames, и наконец P-frames. I - ключевой кадр, два кадра B предсказаны от кадра P заранее, и P-кадр вперед предсказан от I-кадра. Чтобы расшифровать эту последовательность должным образом, вы сначала должны развернуть I-кадр, тогда вы сможете развернуть P-кадр, и наконец после этого вы можете развернуть два B-кадра. Это путает декодеры VFW, потому что они не могут развернуть P-кадр прежде, чем развернуть B-кадры.
Опция Packed Bitstream работает вокруг этой проблемы, заключая в капсулу последовательность BBP, как будто это - единный кадр, затем добавляя два N (пустых)кадра, как placeholders(занять место): I [BBP] NN. Теперь, когда программа читает последовательность, то сначала cчитывает данные I-кадра, и VFW развертывает это. Затем программа читает последовательность BBP, думая, что это - один кадр видео. Декодер знает, что это - три кадра, таким образом развертывает все три, хранит их внутренне, и возвращает первый развернутый(декомпрессованный) B-кадр программе. Затем программа читает первый N-кадр и передает его декодеру. Декодер игнорирует N-кадр и возвращает второй B-кадр, который уже расшифрован. Наконец программа читает второй N-кадр и передает ее к декодеру. Снова, декодер игнорирует N-кадр и вручает уже расшифрованный P-кадр программе.
Теперь что надо сделать, чтобы не было N-frames: да по-просту отключить возможность появления B-frames между I и P кадрами. Опять маленькое лирическое отступления:
"Frame drop ratito" количество пропускаемых кадров. Эта функция будет работать в том случае, если кодек считает, что для кодирования не хватает битрейта. В этом случае кодер начнёт выкидывать кадры. При выставлении в 0 не пропускается ни одного кадра, при выставлении в 100 пропускается столько кадров, сколько нужно кодеру для нормальной работы. Для получения качественного видео я не рекомендую использовать значения отличные от нуля.
Так вот считается . что установка Frame drop ratito=-1 позволяет нам избежать появления N-Vops, но простому смертному она не доступна и мы пользуемся сборками XviD 1.2.2, например, от Jawor, где это выполнено на программном уровне. Но даже на его сборках в логе мы встречаем появление N-Vops, но реально об их отсутствии или наличии вам может точно сказать программа GSpot.В сборках XviD 1.3.0 и выше установка опции Frame drop ratito=0 позволяет отключить N-Vops.

22. Дополнительные настройки второго прохода:

-kboost XXX или "I-frame boost %" эта функция делает увеличение потока на I-frames. Указывается в процентном соотношении. То есть, если указать 10, то на I-frames пойдёт на 10 процентов больше битрейт, относительно расчётного значения (расчёт изначально производит кодер, а мы можем к этому ещё добавить).
-kthresh X "I-frames closer than… frames" здесь указывается расстояние между соседними I-frames, меньше которого считается, что ключевые кадры следуют друг за другом. Если какие-то I-frames попадают в этот предел, то производится уменьшение потока, расходуемого на них. При установке этого параметра в 1, производится отключение этой функции. Оптимальным значением я считаю 2.
-kreduction XX или "…are reduced by %" эта функция уменьшает битрейт первых I-frames в ряде идущих подряд I-frames. Последний I-frames идёт с нормальным коэффициентом сжатия. По умолчанию 20.
-oimprove ХХ или "Max overflow improvement" этот параметр определяет, на сколько можно поднимать битрейт, относительно среднего битрейта, на непродолжительных участках (там, где это требуется). Слишком большое значение замедляет работу кодера. Рекомендуемое значение 10.
-odegrade ХХ или "Max overflow degradation %" этот параметр определяет, на сколько можно снижать битрейт, относительно среднего битрейта, на непродолжительных участках (там, где это требуется). Слишком большое значение замедляет работу кодера. Рекомендуемое значение 10.

Теперь мы дошли до компрессии по криволинейному алгоритму (Curve compression) . Эта функция есть только у кодека Xvid. Это небольшое преимущество кодека Xvid в сравнении с DivX, но в определённых обстоятельствах это может добавить немного качества.

-ostrength ХХ или "Overflow control strength %" этот параметр указывает, на сколько кодек может выходить за расчётные значения в каждом кадре (без разницы, уменьшение или увеличение). При установке этого параметра в 0, кодек начинает работать по-умолчанию (как заложено в алгоритме кодека). Рекомендуемое значение 10.
-chigh XX или "High bitrate scenes %" здесь можно указать, сколько процентов битрейта может забрать кодек со сцен с высокими битрейтами и перераспределить на средне и низкобитрейтные сцены.
-clow XX или "Low bitrate scenes %" этот параметр указывает, сколько процентов битрейта нужно добавить сценам с низкими битрейтами. Этот битрейт будет забран со сцен со средним и высоким битрейтом.
При работе с компрессией по криволинейному алгоритму, перед тем, как им воспользоваться нужно произвести сжатие без него. Если вы видите, что видео получилось недостаточно качественное, посмотрев видео, можно проанализировать, в каких местах плохо отработал кодек. С динамикой, как правило, проблем не бывает. Динамика - это высокобитрейтные сцены. Так же, к высокобитрейтным относится зашумлённое видео или видео с множеством мелких предметов. Так вот, если при просмотре оказалось, что динамика смотрится хорошо, а статика не очень, можно немного снять битрейт с динамичных и среднебитрейтных сцен, для этого нужно поставить какой-то процент в "Low bitrate scenes %". Если среднебитрейтные (движение есть, но его не много) сцены смотрятся то же не очень хорошо, то битрейт можно снять только с высокобитрейтных сцен. Для этого нужно проставить какое-то значение в опции "High bitrate scenes %". Как я уже сказал, эти параметры нужно подбирать экспериментально.

===========================================================================

В канун Нового года команда разработчиков провела активную работу над совершенствованием настроек кодека XviD 1.3.0, цитирую одного из них Jawora:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Привожу пример пресета кодирования кодеком XviD в заданный битрейт 1500 в один проход с режимом VAQ:
video codec:
XviD

video cli:
-reaction 60 -averaging 28 -smoother 28 -nopacked -bquant_ratio 162 -bquant_offset 0 -max_bframes 2 -qtype 0 -vhqmode 4 -max_key_interval 250 -bitrate 1500 -bvhq -quality 6 -pmin 1 -bmin 3 -pmax 6 -bmax 8 -lumimasking

Пресет кодирования кодеком XviD в заданный битрейт 1500 в один проход без VAQ и новой метрики VHQ:
video codec:
XviD

video cli:
-reaction 60 -averaging 28 -smoother 28 -nopacked -bquant_ratio 162 -bquant_offset 0 -max_bframes 2 -qtype 0 -vhqmode 4 -max_key_interval 250 -bitrate 1500 -bvhq -quality 6 -pmin 1 -bmin 3 -pmax 6 -bmax 8

Здесь установлены максимальные ограничения по квантам при условии достаточного битрейта, если его явно не хватает, то лучше сменить на пресет с большим битрейтом или снизить разрешение. Возможно и увеличение максимальных квантизеров -pmax 10 -bmax 12, но это приведёт к снижению качества рипа и появлению артефакта блочности изображения. Терпимо, когда максимальные выбросы по квантам не превышают -imax 5 -pmax6 -bmax 8
Для варианта двухпроходного кодирования в заданный битрейт 1500 кбит\с возможности кодека шире за счёт возможного перераспределения битрейта по разным сценам:
video codec:
XviD

video cli:
-qtype 1 -vhqmode 1 -nopacked -bquant_ratio 100 -max_bframes 1 -max_key_interval 250 -quality 5 -zones 0,q,3.0 -notrellis -nochromame -turbo
-qtype 1 -vhqmode 4 -nopacked -bquant_ratio 100 -max_bframes 1 -max_key_interval 250 -quality 6 -fourcc DX50 -bitrate 1500 -bvhq -vbvmax 4854000 -vbvsize 3145728 -ostrength 30 -oimprove 30 -odegrade 10 -chigh 20 -clow 7 -imin 1 -pmin 1 -bmin 1

В заключении пример двухпроходного кодирования в заданный размер 1,37 ГБ:
video codec:
XviD

video cli:
-nopacked -bquant_ratio 100 -max_bframes 1 -qtype 1 -vhqmode 1 -max_key_interval 250 -quality 5 -nochromame -turbo
-nopacked -bquant_ratio 100 -max_bframes 1 -qtype 1 -vhqmode 4 -max_key_interval 250 -quality 6 -fourcc DX50 -size 1400000 -bvhq -vbvmax 4854000 -vbvsize 3145728 -ostrength 30 -oimprove 30 -odegrade 10 -chigh 20 -clow 7 -imin 1 -pmin 1 -bmin 1 -imax 4 -pmax 5 -bmax 6

Помните всегда, что однопроходные пресеты дают худший результат и имеют больший вес артефактов, квантизеры по всем фреймам получаются довольно высокими, так что только воспалённый разум может заставить риппера установить однопроходное кодирование. Если уж так хочется выполнить скоростной однопроходный режим кодирования, подберите битрейт такой, чтобы на выбранном вами разрешении коэффициент качества был не ниже 0,21 бит\пиксель !!!
Наиболее лучший результат можно получить при кодировании XviD c постоянным квантизером 2 для всех фреймов:
video codec:
XviD

video cli:
-cq 2.0 -qmatrix "C:\Program Files\XviD4PSP 5\presets\matrix\cqm\Jawor_ZSM.cqm" -vhqmode 1 -metric 1 -zones 0,w,1.0,O -nopacked -bvhq -bquant_ratio 100 -bquant_offset 0 -max_bframes 1 -max_key_interval 250 -smoother 0

Только в данном случае квантизёр для всех кадров – I, P и B и для всех сцен(статических и динамических),-одинаковый. Для этого необходимо задать "Quantizer ratio"равным единице -bquant_ratio 100, а параметр "Quantizer offset" задаём равным нулю -bquant_offset 0. В результате получаем:
Квантизёр B-кадров = заданный квантизёр * Quantizer ratio + Quantizer offset. То есть 2 * 1 + 0 = 2, что и требовалось.
Квантизёр P-кадров = Квантизёр I-кадров = заданный квантизёр.

ПРЕДУПРЕЖДЕНИЕ: СЛЕДИТЕ ВНИМАТЕЛЬНО ЗА ПРИМЕНЯЕМЫМИ БИЛДАМИ. НА НЕКОТОРЫХ ПРИ ВКЛЮЧЕНИИ РЕЖИМА VAQ НАБЛЮДАЕТСЯ КРАХ ИЗОБРАЖЕНИЯ!!!
Не воспринимайте данный опус, как некий постулат. У вас вполне может быть иное мнение, так что сразу прошу вашего критического снисхождения и реальных своих рекомендаций с целью повышения качества кодирования кодеком XviD .
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 1 год 9 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
Спасибо сказали: admin, Mihanja80, olehgs, Ego, videoDVDkhv

Re: Особенности кодирования кодеком XviD+ VAQ. 9 года 5 мес. назад #225

  • Tempter57
  • Tempter57 аватар
  • Не в сети
  • Эксперт
  • Сообщений: 66
  • Спасибо получено: 92
Если интересно потестить последний билд XviD 1.3.0 от Jawora, то подключайтесь в работу:
jawormat.republika.pl/msvc.7z
Там обе версии под 32 и 64 битные оси. Особенно тестируйте режим подключения с VAQ: -masking 2 и подключения новой метрики VHQ: -metric 1. Смотрите на предмет появления артефактов в виде блочности на отдельных участках изображения. Помните, как давало ранее артефакты подключение mb-tree в кодеке х264. Особенно смотрите на тёмных сценах, низком битрейте и при градиентах цветовых переходов, могут и на движении высыпать и не обязательно быстром, но вроде после билда от 6.01.2011 они не появлялись в более поздних за 8.01.20011, но всё же следует тщательно проверить ещё раз.
Следите за результатами тестов на этих страничках:
forum.doom9.org/showthread.php?t=158692&page=2
forum.doom9.org/showthread.php?t=158955
forum.doom9.org/showthread.php?t=158819
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Гостям запрещено создавать сообщения!
Спасибо сказали: admin, videoDVDkhv

Re: Особенности кодирования кодеком XviD+ VAQ. 9 года 5 мес. назад #226

  • Mihanja80
  • Mihanja80 аватар
  • Не в сети
  • Модератор
  • Сообщений: 101
  • Спасибо получено: 45
Тестирую постоянно :wink:
На данный момент Еще не могу понять есть ли польза от новой оптимизации PSNR-HVS-M
-metric 1
При сравнении двух файлов (перекодированных с идентичными настройками но один с ключом -metric 1 а другой без) в программе AvsP видно что изменения присутствуют но улучшает ли это общую картину непонятно. Вот ждем Вашего Авторитетного заключения по окончании тестов :)
P.S. Работа мешает тестированию...
Гостям запрещено создавать сообщения!
Спасибо сказали: videoDVDkhv

Re: Особенности кодирования кодеком XviD+ VAQ. 9 года 5 мес. назад #248

  • CrashO
  • CrashO аватар
Приветствую. Испытываю те же траблы с xvid, тестил разные версии программ (GK,AviDemux, Xvid4PSP опять же) и разные версии xvid, НУ НЕ ХОЧЕТ XVID ПОПАДАТЬ В РАЗМЕР. Прочел всю ветку пробовал, ничего не меняется. Может, что не так делаю, хотя в сжимании видео я имею определенный опыт?
Тестировал Xvid4PSP версии 5.0.37.8 rev 132 толку ноль, xvid делает меньше битрейт и тем самым качество материала на выходе.
Заранее, спасибо.
Гостям запрещено создавать сообщения!

Re: Особенности кодирования кодеком XviD+ VAQ. 9 года 5 мес. назад #249

  • Tempter57
  • Tempter57 аватар
  • Не в сети
  • Эксперт
  • Сообщений: 66
  • Спасибо получено: 92
Если вы применяете во втором проходе -imin 2 -pmin2 -bmin 2, то кодек на некоторых исходниках может войти в режим насыщения по средним квантам (I -2, P-2 и B-3) на гораздо более низком значении битрейта. Для более прогнозируемого попадания в заданный битрейт на любом типе исходников необходима установка как минимум -pmin 1, а иногда нужно и все минимальные кванты установить в положение 1. Режим с -imin 2 -pmin2 -bmin 2 считается более предпочтительным, поскольку включается более лучший режим распределения квантов и рипы квантом 2 смотрятся также хорошо, как и с 1. Установка в -imin 1 -pmin 1 -bmin 1 может только раздуть размер выходного файла. Поэтому прочтите Методику подбора битрейта и определите всё же за ранее какой битрейт нужен вам для вашего исходника, чтобы получить на выходе оптимальное качество. Есть исходники на которых на максимальном битрейте 2000 кбит\с средние кванты с -imin 2 -pmin2 -bmin 2 получаются довольно высокими более 4 и выше. Для подобных исходников лучше выставлять вообще -imin 3 -pmin3 -bmin 3, за счёт повышения минимальных квантов идёт понижение средних. Желательно добиться чтобы средние кванты по I-frames не превышали 4, P-frames не превышали 5 и B-frames не превышали 8. Если и в этом случае они выше,-снижайте разрешение, увеличивайте количество идущих подряд b-frames(- max_bframes 2 или 3) и применяйте сильную фильтрацию с шумодавами и осторожно используйте шарперы (по возможности обходитесь без них).
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 9 года 5 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
Спасибо сказали: videoDVDkhv

Re: Особенности кодирования кодеком XviD+ VAQ. 7 года 2 мес. назад #2949

  • ppnikpa
  • ppnikpa аватар
  • Не в сети
  • Новичок
  • Сообщений: 1
  • Спасибо получено: 1
Практический вопрос. У меня возникла проблема с битрейтом и не могу понять причину.

Есть исходный файл c HDTV
MediaInfo [ Нажмите, чтобы развернуть ]


И его надо преобразовать в xviD 720*400. Хардварный плеер по результатам проверки, прошёл тесты на
2pass3k 2-pass 2981 kb/s, MP3 128kb/s
6k-320 1-pass 6378 kb/s, MP3 320kb/s

Что это и как добиться от программ этих вариантов? Все попытки приводят к битрейту ниже 2000.
Последнее редактирование: 7 года 2 мес. назад от ppnikpa.
Гостям запрещено создавать сообщения!
Спасибо сказали: videoDVDkhv
Время создания страницы: 0.156 секунд