Cжатие видео с помощью программы NanDub2.


Содержание:



Вступительное слово.

Для начала хочу выразить благодарность создателям первого Nandub’a.

Мне давно хотелось сделать что то вроде этой программы, но останавливала необходимость копаться во “внутренностях” третьего DivX-а. Те, кто участвовал в создании первого Nandub’a, проделали большую работу по извлечению на свет скрытых параметров этого кодека. Без их работы данная программа никогда бы не появилась на свет. Более подробно о том, чем первый Nandub отличается от второго, можно прочитать тут.

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

В результате достигнута довольно высокая эффективность кодирования, а настройки по умолчанию оптимальны или близки к оптимальным для 90% исходных материалов.

Дальнейшая информация сгруппирована от простого к сложному. Сначала общие действия, потом детальное описание настроек. В процессе изложения подразумевается, что вы имеете представление о том, что такое VirtualDub и первый Nandub. Также советую прочитать сначала общую информацию с сайта http://divxhome.bmtelecom.ru/



Подготовка к сжатию и настройка фильтров.

Итак, запускаем Nandub2 и открываем исходник – файл “avi”, скрипт AviSynth, или что-нибудь другое. Первым делом запускаем: “Video-> SBC Options-> BitRate Calculator…

Устанавливаем необходимый размер результата “Final Size” и битрейт звуковой дорожки.

Если используется несколько звуковых дорожек, печатаем их суммарный битрейт. Затем щелкаем “Calculate” и “Ok”. Вычисленное значение битрейта автоматически запишется в настройки кодека.

После этого настраиваем видео фильтры “Video-> Filters…” и изменяем размер изображения. Вот пример подобных установок:

Если все преобразования осуществляются с помощью фильтров AviSynth-а, то необходимо установить режим прямой передачи изображения без дополнительных преобразований - “Fast recompress” в меню “Video”.

Несколько важных замечаний по поводу настройки фильтров.

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

  2.    Старайтесь при изменении размера изображения так обрезать исходную картинку, чтобы в результате не было черной рамки на краях изображения. Дело в том, что используемая в программе NanDub2 психовизуальная модель может в некоторых случаях работать некорректно, если имеется подобная рамка. Даже если эта рамка шириной всего в несколько пикселей, результат сжатия будет хуже максимально достижимого.

  3.    Мной был несколько изменен алгоритм работы бикубического фильтра, встроенного в NanDub. Дело в том, что “родной” бикубический фильтр VirtualDub-a использует искажающий изображение алгоритм. В результате применения такого фильтра образуются окантовки на резких переходах и ухудшается сжимаемость видео. Теперь режим “Precise bicubic” встроенного resize фильтра использует математически точный алгоритм. (соответствует настройкам b=0, a=0.5 в фильтре AviSynth-а) Я рекомендую применять фильтр с данными настройками, т.к. они дают наиболее высокое качество изображения. Также мной добавлен сглаживающий вариант бикубического фильтра “Precise Mitchell”.(соответствует настройкам b=0.333, a=0.333 в фильтре AviSynth-а). Это хорошая альтернатива билинейной фильтрации.



Первый проход.

После окончания настройки фильтров выбираем: “File->Two passes…” и даем название выходному файлу и файлу для сбора статистики первого прохода. Теперь можно просто ждать результата, а можно сразу прикинуть, какое качество изображения получится в конце сжатия. Подождем, пока будет рассчитана значительная часть первого прохода и посмотрим на окно статистики сжатия.

Параметр “Video data” - это текущий размер и битрейт видеофайла, как если бы результат первого прохода записывался на диск.

Параметр “Projected file size:” содержит интерполированный относительно текущего состояния размер первого прохода. Теперь нужно сосчитать простую формулу:

Размер первого прохода / Необходимый финальный размер видео(без звука).

Данный коэффициент я буду называть  «соотношение размеров первого и второго прохода» или сокращенно СРП/В.

NanDub2 рассчитан на сжатие в диапазоне от 2 до 3 СРП/В.

При величине СРП/В, меньшей 2, качество изображения растет довольно слабо, т.к. начинает ограничиваться предельным качеством MPEG4 кодека. В принципе предельное качество можно улучшить, если разблокировать возможность сжатия кадров с 1 уровнем квантования (то, что по терминологии первого NanDub-а называется DRF 1). Но, к сожалению, DivX 3, точнее старый M$ кодек, не может в принципе сжимать с единичным порогом квантования. (Только не надо мне возмущенно писать, что DRF 1 не имеет никакого практического смысла. Это является истиной для обычной технологии контроля битрейта, а не той, что применена во втором NanDub-е.) Но в любом случае максимально достижимое качество сжатия у второго NanDub-а выше, чем у первого, за счет модифицированного кодека и специального алгоритма, компенсирующего некоторые ошибки программирования третьего DivX-a.

При значении СРП/В в районе 3, приходится тщательно подготавливать входной файл (фильтровать шумы) и, возможно, подгонять параметры психовизуальной модели под статистику конкретного файла. Если СРП/В больше 3, то скорее всего не удастся получить одинаково-приличное качество на всем протяжении фильма. По умолчанию псховизуальная модель настроена так, чтобы давать приблизительно одинаковое субъективное качество для различных сцен. Хорошим подходом, при сжатии с уровнем СРП/В большим 3, является некоторый пережим “тяжелых” для сжатия сцен с целью повысить качество остальных частей фильма. В принципе возможно сжатие и при значении СРП/В существенно выше 3, но качество получаемого изображения будет уже довольно посредственным.

Итак, предположим, что рассчитанное значение СРП/В получилось в районе 2-2,5. Значит, все в порядке, осталось только дождаться результатов кодирования. Если СРП/В больше 3 – нужно уменьшить разрешение кодируемого фильма или лучше отфильтровать шумы. Если СРП/В меньше 2, можно поступать двумя способами: или увеличить разрешение кодирования, или оставить как есть – полученная в результате картинка будет выглядеть несколько чище. Кому как больше нравится.

Точный размер первого прохода можно посмотреть в любое время, если открыть файл статистики второго NanDub-а в программе “Gordian Knot”. Я не стал менять формат этого файла. Единственно, параметру “Luma Noise” первого NanDuba соответствует параметр “Complexity” второго. И вычисляется он с помощью совсем другого алгоритма. Несколько подробнее об этом будет написано ниже.



Второй проход.

Когда завершится первый проход, NanDub2 перейдет непосредственно к сжатию видео. В окне статистики сжатия наиболее интересными являются следующие параметры:

Параметер “Video data” содержит размер и текущий битрейт уже сжатого видео.

Параметер “Deviation” - это отклонение текущего размера выходного видеофайла от заранее рассчитанной величины. Не надо пугаться такого существенного отклонения, это особенность работы второго NanDub-а. Чтобы пояснить, почему так происходит, рассмотрим принцип работы алгоритма контроля битрейта, использованного в этой программе.

Обычным способом реализации алгоритма двухпроходного сжатия является следующий:

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

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

  3.    Во время второго прохода видео сжимается с этими строго рассчитанными параметрами.

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

В программе NanDub2 реализован другой алгоритм контроля битрейта. Психовизуальная модель здесь разбита на две части: глобальную и локальную.

Глобальная рассчитывает общие параметры сжатия так же, как в предыдущем случае. Но работа кодека во время второго прохода определяется не только этим алгоритмом. Конечное сжатие формируется с помощью трех отдельных механизмов:

  1.    Глобальная психовизуальная модель.

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

  3.    Специальный алгоритм обратной связи, реагирующий на текущие мгновенные состояния кодека.

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

Но не надо впадать в панику от этого факта. Экспериментальным путем был подобран средний коэффициент выигрыша от использования локальной психовизуальной модели. В настройках второго NanDub-а он называется “Bitrate correction factor”. По умолчанию он равняется 1,235. Перед началом второго прохода заданный в настройках битрейт умножается на это число с расчетом на то, что локальная психовизуальная модель скомпенсирует эту добавку. В подавляющем большинстве случаев так и происходит. Обычно отклонение размера финального файла от рассчитанного не превышает одного, максимум двух процентов. Исходники с одинаковой статистикой дают сходные результаты сжатия. Поэтому если сжимается большое количество экзотических файлов нужно просто рассчитать другой “Bitrate correction factor”.

Правильность сжатия во время второго прохода можно проверить, используя следующую формулу:

(Video data - Deviation)/ Video data ~= Bitrate correction factor.

Например, для случая, изображенного на рисунке:

 (423,5+101,7)/423,5 = 1,24

Результат приблизительно равняется значению по умолчанию 1,235.

Если размер полученного финального файла слишком сильно отличается от необходимого, придется сделать дополнительный проход сжатия. Для этого рассчитаем новый “Bitrate correction factor” воспользовавшись следующей формулой:

(Небходимый размер файла * Старый Bitrate correction factor)/ Реальный размер файла.

Например, нам нужно было получить финальный размер 620 мегабайт, а в реальности вышло 600 мегабайт.

                  (620*1235)/600=1276

Открываем “Video-> SBC Options->SBC Settings…” и вводим новое значение “Bitrate correction factor”

Также советую проверить корректность установленного значения “Bitrate” и то, что на вкладке “Bitrate Curve” открыт файл статистики первого прохода.

После ввода нового значения “Bitrate correction factor” выбираем “File->Save as AVI…” и заново запускаем второй проход.

Иногда бывает интересно (и полезно) посмотреть на текущую работу NanDub-а во время второго прохода, отображаемую во вкладке “Video” панели статистики.

На этой диаграмме:

  • Белые точки – Рассчитанный по результатам первого прохода битрейт.
  • Синие столбики – Реальный битрейт, с которым был закодирован конкретный кадр.
  • Желтые столбики – Ключевые кадры, добавленные NanDub-ом.
  • Красные столбики – Ключевые кадры, добавленные непосредственно кодеком.
  • Сине-зеленые точки – Относительное количество двигающихся объектов на этом участке фильма.

Встроенная в NanDub2 локальная психовизуальная модель дает очень характерную картину распределения битрейта:

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



Что можно менять в настройках между проходами.

Теперь необходимо затронуть немаловажный вопрос: что можно менять в настройках сжатия между первым и вторым проходом, а что нельзя.

Собственные настройки второго NanDub-а, находящиеся в “Video-> SBC Options->SBC Settings…” , можно спокойно менять между проходами (например, глобальная психовизуальная модель заново пересчитывается перед стартом второго прохода). Таким образом, можно сжать несколько вариантов фильма с разными настройками и выбрать лучший.

Но с настройками видеофильтров ситуация сложнее. Второй NanDub несколько менее чувствителен к изменению этих настроек, чем первый, так как отклонения в рассчитанном битрейте частично (но не полностью!) будут компенсированы локальной психовизуальной моделью. Нужно уяснить себе следующий факт – максимальное качество сжатия достигается только при одинаковых настройках видеофильтров для первого и второго прохода!

Так, например, совсем не проходит такой способ “оптимизации” скорости сжатия, как включение шумодавных фильтров только во время второго прохода. Во-первых, сжатие будет происходить совершенно не в оптимальном режиме, а во-вторых, размер полученного файла будет очень сильно отличаться от рассчитанного. В результате все равно придется делать третий проход, а полученное качество будет существенно хуже возможного. И все это при больших затратах времени на кодирование.

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

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

Следующий раздел будет посвящен любителям крутить различные настройки и докапываться до сути вещей :-), но сначала хочу составить “белый” и “черный” список настроек второго NanDub-а. В белый список входят те из них, изменение которых может дать положительный эффект. Вот он:

  1.    “Bitrate” – Как же без него :-).
  2.    “Bitrate correction factor”.
  3.    Все четыре настройки “HVS correction
  4.    “End credits
  5.    “Anime correction
  6.    Настройки алгоритма расстановки ключевых кадров “Keyframe Interval”, ”Internal SCD”, ”Space KFs”

Все остальные настройки без особых на то причин изменять не рекомендуется.

Отдельно нужно пояснить работу с файлами “*.ECF”. Сначала я подумывал удалить поддержку этих файлов из второго NanDub-а, но потом решил на всякий случай оставить. В то же время использовать эти файлы нужно крайне осторожно. В первую очередь не рекомендуется принудительно фиксировать уровни квантования, т.е. использовать команду “CL”. Встроенному в NanDub2 алгоритму контроля битрейта для корректной работы необходимо свободно выбирать уровни квантования. Качество видео при работе встроенного алгоритма всегда выше, чем при принудительной установке “CL”. Также не стоит использовать команды “G” и “M”. Особо хочу отметить, что мной не производилось какого-либо тестирования корректности работы файлов “*.ECF” вместе с программой NanDub2.



Полная информация по установкам сжатия.

Вот полный список доступных настроек:

[1] – “Bitrate” Битрейт выходного файла. Стандартный параметр для любого кодека.

[2] – “Bitrate correction factor” Что это за параметр и зачем он нужен - было подробно описано выше.

[3] – “HVS correction” Содержит настройки глобальной психовизуальной модели. Этот алгоритм работает следующим образом:

Во время первого прохода, для каждого кадра, вычисляется специальный параметр - “Complexity”. Большие значения этого параметра обозначают относительно низкую чувствительность глаза к искажениям сжатия в текущем кадре. Если же “Complexity” имеет низкое значение, искажения сжатия в этом кадре сильнее заметны.

В целом алгоритм, вычисляющий “Complexity”, работает довольно хорошо, но нужно помнить, что он считает “среднюю температуру по больнице”, т.е. по кадру :-). Для примера приведу наиболее тяжелый случай. На фоне ярко освещенного витража снято сильно затененное лицо главного героя. Ясное дело, что витраж имеет высокое значение “Complexity”, как высоко детализованный и сильноконтрастный объект. Но изображение лица весьма чувствительно к искажениям сжатия. В результате получится что-то среднее – для лица слишком велико, а для витража низковато. Локальная психовизуальная модель помогает частично исправить подобную ошибку, но делает это не полностью. Кардинальным способом исправить подобный недостаток является переход на полностью зонально-адаптивную психовизуальную модель, но её невозможно нормально реализовать в совместимом с MPEG4 кодеке. Правда, не все так страшно :-). Сцена, подобная вышеописанной, является грубейшим нарушением всех канонов операторской работы и посему встречается не часто.

Перед началом второго прохода значение “Complexity” пересчитывается в коэффициент коррекции битрейта с помощью функции, которую, в свою очередь, задают четыре параметра, объединенных в группу “HVS correction”. Чтобы стало понятнее назначение этих коэффициентов, приведу такой график:

Надеюсь всем стало все понятно :-).

Low complexity gain”- Задает максимальную добавку к битрейту для сцен с низким значением “Complexity”.

LC curve”- Регулирует степень изгиба кривой коррекции битрейта. В основном влияет на кадры с промежуточными  значениями “Complexity”, так сказать “между нулем и нижней серединой”. При увеличении этого параметра степень изгиба возрастает, а кадры в этом диапазоне получат меньшую прибавку к битрейту. При значении “LC curve” равном 10, функция коррекции для низких значений “Сomplexity” становится линейной. (Соответствует пунктирной линии на графике.) При еще меньших значениях параметра “LC curve” кривая коррекции становится выпуклой.

High complexity attenuation” – Задает начальный наклон функции поджима битрейта для сцен с высоким значением “Complexity”. При увеличении этого параметра наклон кривой коррекции тоже возрастает.

HC curve” – Регулирует скорость падения кривой коррекции битрейта. Задает степень дополнительного уменьшения битрейта для кадров с самыми высокими значениями “Complexity”. При увеличении значения “HC curve” скорость падения функции коррекции тоже возрастает.

Вместе все четыре коэффициента позволяют добиться практически любой необходимой формы для функции коррекции. Глобальная психовизуальная модель разработана с учетом получения высокой повторяемости результатов для различных исходников, разрешений и битрейтов. В процессе настройки параметров, установленных по умолчанию, было использовано большое количество разных по своей статистике видеоисходников. Стандартные настройки подобраны с целью обеспечения приблизительно-одинакового субъективного качества на протяжении всего фильма. Значительно изменять эти настройки имеет смысл, только если статистические параметры фильма сильно отличаются от нормальных, или если нужно добиться рекордного сжатия. Посмотреть статистику фильма можно, открыв файл первого прохода в программе “Gordian Knot”. Вот пример вполне обычной статистики:

Видно, что большое количество кадров с низким значением “Complexity” занимают относительно небольшой объем, по сравнению с небольшим количеством кадров с высоким значением “Complexity”. Вот тоже вполне обычная статистика.

Если фильм слишком темный, но в нем встречаются яркие, контрастные сцены, подобный график может иметь слишком сдвинутый влево пик с очень длинным хвостом. Тогда бывает полезным несколько уменьшить “Low complexity gain” и  сделать спад функции коррекции битрейта несколько более плавным. Для этого нужно уменьшить “HC curve” и одновременно несколько увеличить “High complexity attenuation”.

При настройке психовизуальной модели важно понимать, что добавка к битрейту распределяется из ограниченного количества бит, и если вы, скажем, увеличили “Low complexity gain” и одновременно уменьшили “High complexity attenuation”, то у вас окажутся пережатыми кадры с промежуточными значениями “Complexity”, т.к. для них просто не будет выделено достаточного места в общем объеме финального файла.

Тонкую настройку психовизуальной модели удобно осуществлять с помощью другой функции “Gordian Knot-а” – Виртуального “проигрывателя” файлов статистики.

Подобрав в фильме несколько участков с большими изменениями значения “Complexity”, можно закодировать их с различными настройками психовизуальной модели. (Кстати, мало кто знает, что во время второго прохода NanDub может закодировать произвольный участок фильма. Для этого нужно просто установить диапазон сжатия обычным способом. Только первый проход всегда начинается с нулевого кадра.) Определив в пробных участках кадры, получившиеся недостаточно качественными, смотрим в “Gordian Knot-е” их значение “Complexity” и соответственно меняем настройки психовизуальной модели. После этого снова сжимаем пробные файлы, и так далее до достижения максимально возможного качества.

[4] – “End credits” Стандартная функция от первого NanDub-а. Предназначена для более сильного сжатия финальных титров. Единственное отличие - уменьшение размера титров указывается в процентах относительно рассчитанного значения. То- есть если значение “Bitrate scale” равняется 33%, финальные титры будут иметь размер в три раза меньший, чем если бы эта функция не применялась. Номер кадра, с которого начинаются финальные титры, необходимо ввести в поле “End credits start at frame”. Если это значение равно нулю, данная функция отключается. Сам я не пользуюсь этим способом уменьшения размера финальных титров, так как существует более эффективный фильтр с таким же названием.

[5] – “Anime correction”  Функция, предназначенная для сглаживания реакции кодека на быстрые локальные скачки битрейта. Часто встречается, прежде всего в анимационных фильмах, ситуация, когда изображение изменяется только каждый второй или третий кадр. Вот пример подобного участка фильма:

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

При увеличении значения “Threshold” нужны большие локальные колебания битрейта для срабатывания корректора. Рекомендуется включать эту опцию при кодировании анимационных материалов с сохранением значения параметра “Threshold”, установленного по умолчанию. При кодировании обычного видео данная опция бесполезна. Кстати, это далеко не единственная оптимизация для кодирования анимации, которая имеется во втором Nandub-е.

[6] – “Encoding errors prevention & Quality control” Не рекомендуется изменять настройки этой группы, заданные по умолчанию. В первую очередь это относится к установке режима “None”. Дело в том, что в режиме “Antifreeze” и выше включается использующийся во втором NanDub-е специальный алгоритм, компенсирующий некоторые неприятные ошибки программирования третьего DivX-a и дополнительно улучшающий качество передачи цветов. Во время сжатия с помощью второго NanDub-а кодек работает в экстремальном режиме, и все внутренние ошибки, до этого редко проявляющиеся, вылезают наружу. Невозможно гарантировать качество результата кодирования при установке режима “None”.

Настройки режима “Full” аналогичны соответствующим настройкам для первого NanDub-а. Я считаю эти опции довольно бесполезными для кодирования видео, но оставил родной код в прежнем виде. При установке режима “Full” между исходным кадром и распакованным начинает считаться PSNR блоками 4х4. Точнее сказать, там считается не PSNR, а то, что авторы первого Nandub-а под этим понимают :-). При этом если амплитуда ошибки для худшего блока превышает порог для:

  1.    “AntiShit =)” – на место дефектного принудительно вставляется ключевой кадр

  2.   "Min quality" - происходит попытка перекодировать кадр с меньшим порогом   квантования, если эта попытка не удается, вставляется ключевой кадр.

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

Motion modulation”. Задает степень уменьшения чувствительности вышеописанных детекторов, если на изображении присутствуют двигающиеся объекты.

Опция “Full” не может работать в режиме “Fast recompress”, поэтому автоматически заменяется на “Antifreeze” при попытке использовать её в этом режиме.

[7] – “Curve limitation”. Ограничения возможных значений для кривой битрейта. Не рекомендуется изменять эти параметры.

Min bitrate”  При повышении этого параметра ухудшается эффективность сжатия. При понижении возможны проблемы с качеством изображения. При кодировании видео с очень большим разрешением (больше чем у DVD), возможно, стоит повысить его раза в полтора-два.

Max bitrate” Особенно ни на что не влияет. При кодировании с очень большим битрейтом, наверное, имеет смысл его увеличить.

[8] – “Keyframe interval” Стандартная настройка DivX кодека. Максимальный интервал в секундах между двумя ключевыми кадрами.

[9] – “Internal SCD” Стандартная настройка первого NanDub-а. Чувствительность встроенного в кодек алгоритма вставки ключевых кадров. Чем выше это значение, тем меньше чувствительность. Некоторые предпочитают устанавливать этот параметр на 100%. Я не думаю, что это самый правильный подход, но особо важного значения данная настройка не имеет.

[10] – “Space KFs” Стандартная настройка первого NanDub-а. Минимально возможное количество дельта кадров между двумя ключевыми кадрами. При уменьшении этого параметра возможно появление слишком большого количества ключевых кадров на участках с быстрым движением, но зато меньше вероятность не поставить их при частой смене планов в фильме (так называемом коротком монтаже).

[11] – “Keyframes Comp. Lev.” Задают максимальный и минимальный пороги квантования для ключевых кадров. Настоятельно не рекомендуется менять эти настройки. Для нормальной работы алгоритму контроля битрейта, встроенному в NanDub2, необходимо свободно устанавливать пороги квантования.

[12] – “Delta Comp. Lev.” Задают максимальный и минимальный пороги квантования для дельта кадров. Настоятельно не рекомендуется менять эти настройки. Для нормальной работы алгоритму контроля битрейта, встроенному в NanDub2, необходимо свободно устанавливать пороги квантования.



Заключение.

Ну и напоследок небольшое лирическое отступление. Многие, дочитав до этого места, уже задались вопросом: “На сколько еще можно повысить эффективность сжатия?” Или, выражаясь другими словами: “До какой степени еще можно “протвикать” древний M$ кодек?” :-)

К сожалению, выжимать что-либо новое из третьего DivX-а, да и из всей технологии MPEG4, становится все труднее и труднее. Из серьезных технологий остался нереализованным только локально-адаптивный, управляемый с помощью психовизуальной модели, предфильтр. Вроде того, что применен в WMV9 или даже лучше. В то же время при затрате все больших и больших усилий на совершенствование алгоритма сжатия конечная положительная отдача становится все меньше и меньше. Я не планирую дальнейшее кардинальное изменение второго NanDub-а. Возможно, появится еще несколько версий, исправляющих обнаруженные ошибки в коде.

Также представляет некоторый интерес выпуск специальной версии Xvid-а с интегрированными в него технологиями, использованными в програме NanDub2. Но я не думаю, что эффективность сжатия модифицированного Xvid-a будет существенно лучше достигнутой сейчас. И это при достаточно больших затратах труда.

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

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

Neiromaster    © 2003.05.12

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


Новости СтатьиDownloadsО SIF-е Ссылки

• Идеи, статьи, программы Neiromaster © 2003-2011