Компьютерная помощь
Show

Сравнивая Microsoft WMV9 этот «закрытый» кодек с представителями открытого стандарта MPEG-4, получается, что «закрытость» стандарта обеспечивает лучшее развитие, лучшее качество и т.д. — хотя бы из-за того, что не нужно оглядываться на ограничение стандарта, всегда можно, разработав новый подход, выпустить новую версию продукта, которая в то же время будет поддерживать и декодирование старых версий.

И с другой стороны: возьмем тот же MPEG-4, увеличим число дискретных значений при квантовании, улучшим методику определения движения в кадре, применим ресэмплирование разрешения для незначащих кадров, а также возьмем лучший метод компрессии без потерь для сжатия глобальных таблиц и результирующих коэффициентов для кадров (самый банальный «примерный» подход: вместо быстрого, но мало жмущего ZIP’а, возьмем более медленный, но более эффективный RAR). Что это даст? При том же битрейте мы увеличим «передаваемость» исходной картинки на 10-35%. Это повлечет за собой значительное увеличение времени кодирования (до 3 раз) — но, пожалуй, это сильно никого не беспокоит, и довольно-таки поднимет планку минимального процессора для декодирования: до PIV-2000/AthlonXP-2000.

VP6 был анонсирован еще в прошлом году. Однако, когда месяц назад VP6 был отдан в открытое некоммерческое использование, его тестирование на нескольких видеофрагментах,  при том же битрейте этот кодек выдавал значительно лучшее качество.Разработчики реализовали все те подходы, о которых только можно мечтать, за исключением wavelet-методик, плюс позволили пользователю самому настраивать ряд параметров, чему стоит только порадоваться (на данный момент, только xVid позволяет, как минимум, столь детально копаться в настройках кодирования).

Описание настроек кодека

При инсталляции кодек ставит два профиля — VP60 (simple profile) и VP61 (advanced profile). Разницы в настройках нет. Авторы кодека рекомендуют использовать VP60 для обычных и высоких битрейтов, а VP61 — для низких и очень низких битрейтов.VP61 требует при кодировании и декодировании больше ресурсов, но способен дать немного лучшее качество кодирования.

Кодек позволяет работать с ним через VfW интерфейс. Для того, чтобы выставить желаемый битрейт придется воспользоваться свойством этого API, которое позволяет, не инициализируя окно настроек, форсировать битрейт и частоту ключевого кадра. Чтобы сделать это, например, из VirtualDub’а, необходимо в окне выбора кодека (меню Video/Compression), выставить желаемое значение:

Форсирование битрейта

Битрейт выставляет в килобайтах в секунду вместо привычных нам кБит/с, поэтому, желая выставить, скажем, 1600 кБит/с, делите на 8 — т.е. в нашем случае это будет 200.

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

Настройка VP6. Первая вкладка — General

Меню Mode:

Realtime/Live Encoding Может быть использован для кодирования в режиме реального времени, например при оцифровке. Я противник использования сильно жмущих кодеков при захвате, поэтому могу порекомендовать данный режим лишь для тестовых захватов и для захвата «на раз» (например, запись сериала для жены :) ).

Good Quality Fast Encoding. Среднее качество, достаточно высокая скорость кодирования. Не рекомендуется к использованию.

One Pass — Best Quality. Лучший по качеству однопроходный режим. Медленное кодирование.

Two Pass — First Pass. Первый проход двухпроходного кодирования, используется для сбора статистики о видеопотоке для последующего использования во втором проходе.

Two Pass — Second Pass. Второй проход двухпроходного кодирования. Имеет два режима Good Quality и Best Quality, второй, конечно же, имеет более высокое качество, но гораздо более медленный, поэтому если скорость кодирования для Вас критична, можно использовать первый, разница в качестве между двумя режимами не сильно заметна.

Выбор End Usage (Применение видео):

Stream From A Server (CBR)Постоянный битрейт. Подходит для трансляции видео по сети.

Local File Playback (VBR) . Переменный битрейт. Именно этот режим и следует использовать для кодирования видеопотока с последующим проигрыванием на компьютере (или на будущих EVD-плеерах).

Выбор Material (Формат входящего потока):

Interlaced Fields — Чересстрочное видео. Забегая вперед, скажу, что VP6 — лучший, на мой взгляд, кодек, работающий в области низких битрейтов, по обработке чересстрочного видео. Результаты потрясают! Более того, декодер VP6 имеет встроенный механизм деинтерлейсинга, пусть и не такой мощный, как, например, адаптивный деинтерлейсинг у программного обеспечения ATI, но достаточно неплохой.

Progressive. Прогрессивное видео.

Noise Reduction (Шумоподавление) Можно выбрать значение от «0» (шумоподавление отключено) до «6» (максимальное шумоподавление). Включение опции не рекомендуется — с помощью фильтров к VirtualDub можно гораздо эффективнее снизить шумность видео, потеряв значительно меньше в качестве.

Auto Key Frame — при включенной опции кодек автоматически выбирает расположение ключевых кадров в потоке (с учетом опции Max Frames Btw Keys ). Обязательно включите эту опцию.

Max Frames Btw Keys — Наибольшая длина ключевого фрагмента (максимальное количество кадров между ключевыми кадрами). Величина зависит от видеопотока. Если затрудняетесь сами определить, выставьте 360 — вполне «золотая середина».

Настройки: Advanced

Настройка VP6. Вторая вкладка — Advanced

Выбор DataRate Control (Управление потоком данных):

Undershoot — В % от значения datarate, уже выставленного Вами, означает битрейт, который будет первоначально отведен на кодирование видео. Остатки пойдут прежде всего на глобальные и локальные таблицы данных, а также на особо сложные фрагменты видеопотока. Отмечу, что значение по умолчанию (90%) вполне подходяще. Еще одно важное замечание: VP6 не подходит для сжатия небольших видеороликов из-за того, что достаточно большой объем в финальном файле занимают глобальные данные, и чем меньше длительность фильма, тем больше будут занимать эти данные относительно самого видеопотока. Минимальная рекомендуемая мной длительность фильма для кодирования в VP6 составляет 10 минут, и чем больше, тем лучше!

Adjust Quantizer . Позволяет вручную определить диапазон коэффициентов квантования для процесса кодирования. Очень мощное средство управления качеством, однако Вы должны понимать, что делаете, по нескольким причинам:

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

2. Диапазон дискретных значений коэффициентов у VP6 значительно больше, чем в стандарте MPEG-4 (1 — 80), причем алгоритм использования матрицы квантования несколько иной. В сумме это дает большее качество кодирования: «квадратики» в финальном видео, сжатом с помощью VP6, Вы получите только при очень низком битрейте.

3. Следует понимать механизм использования квантования при кодировании и выбирать коэффициенты, исходя из этого, стремясь максимально задействовать битрейт. Так, для нижней границы значения лучше выбирать из ряда: 2, 4, 8, 12, 16, 24, 32, 40 и т.д, а для верхней — 3, 7, 11, 15, 23, 31, 39 и т.д. Т.е., к примеру, 4 — минимальный коэффициент, 47 — максимальный. Это совсем не означает, что «шаг вправо, шаг влево — растрел на месте» — совсем нет. Это оптимальные установки для диапазонов, при которых будет достигаться оптимальное заполнение глобальных данных.

Temporal Resampling — кодек будет форсированно понижать частоту кадров для того, чтобы втиснуться в заданный битрейт. С помощью значения Down Watermark Вы задаете условие уровня нехватки битрейта, при котором кодек начнет выбрасывать кадры. Я не рекомендую включать эту опцию за исключением кодирования при очень низких битрейтах (например, для наладонников) или кодирования очень статичных фильмов (мультфильмы, рендеренные фильмы-презентации и т.п.)

Spatial Resampling — немного более полезная опция. Позволяет кодеку уменьшить разрешение кадра, в котором мало информации. Условия включения данного механизма задаются при помощи значений Down Watermark и Up Watermark: первым Вы также задаете уровень нехватки битрейта, при котором кодек уменьшит разрешение кадра, вторым задаете условие выбора таких кадров. С помощью грамотного подбора значений можно добиться хорошего сжатия малозначимых кадров фильма, например, титров. Однако, и эта опция, и предыдущая не имеют пока нормальных средств управления, ожидается, что следующая версии кодека исправит ситуацию.

Выбор Streaming Parameters (Параметры для потокового видео, режим CBR):

Как правило, установки по умолчанию весьма неплохо работают при создании потоков для трансляции по сети.

Peak Bitrate — Максимальный битрейт, разрешенный для потока

Prebuffer — Длительность потока в секундах для предварительной загрузки плеером клиента при старте проигрывания — чтобы поддержать плавное проигрывание в случае плавающей скорости трансляции.

Optimal Buffer — Оптимальная длительность буфера, которую кодек должен поддерживать при проигрывании

Max Buffer — Максимальная величина для установки буфера загрузки

Выбор Two Pass Section Datarate (Установки для второго прохода двухпроходного режима:

Variability — условная величина, определяющая величину разброса битрейта. 0 — означает постоянный битрейт, 100 — позволяет кодеку распределять битрейт в любых отношениях для любых секций потока. Не рекомендую устанавливать ниже 70. Для относительно высоких битрейтов и большой длительности потока (более получаса) можно смело ставить 100.

Min Section — минимальный % от битрейта, который кодек выделит для сегмента. 40 — вполне нормальная величина, однако, если в фильме есть титры, статика, можно уменьшить эту величину. В принципе, устанавливая значение в 0, Вы отдаете контроль на откуп кодеку.

Max Section — максимальный % от битрейта, который кодек выделит для сегмента. Минимальное «нормальное» значение — 100%. Максимальное значение, формально, не ограничено, но 400 % — разумный потолок для 95% случаев.

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

Настройка VP6. Вторая вкладка — Advanced

Выбор DataRate Control (Управление потоком данных):

Undershoot — В % от значения datarate, уже выставленного Вами, означает битрейт, который будет первоначально отведен на кодирование видео. Остатки пойдут прежде всего на глобальные и локальные таблицы данных, а также на особо сложные фрагменты видеопотока. Отмечу, что значение по умолчанию (90%) вполне подходяще. Еще одно важное замечание: VP6 не подходит для сжатия небольших видеороликов из-за того, что достаточно большой объем в финальном файле занимают глобальные данные, и чем меньше длительность фильма, тем больше будут занимать эти данные относительно самого видеопотока. Минимальная рекомендуемая мной длительность фильма для кодирования в VP6 составляет 10 минут, и чем больше, тем лучше!

Adjust Quantizer . Позволяет вручную определить диапазон коэффициентов квантования для процесса кодирования. Очень мощное средство управления качеством, однако Вы должны понимать, что делаете, по нескольким причинам:

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

2. Диапазон дискретных значений коэффициентов у VP6 значительно больше, чем в стандарте MPEG-4 (1 — 80), причем алгоритм использования матрицы квантования несколько иной. В сумме это дает большее качество кодирования: «квадратики» в финальном видео, сжатом с помощью VP6, Вы получите только при очень низком битрейте.

3. Следует понимать механизм использования квантования при кодировании и выбирать коэффициенты, исходя из этого, стремясь максимально задействовать битрейт. Так, для нижней границы значения лучше выбирать из ряда: 2, 4, 8, 12, 16, 24, 32, 40 и т.д, а для верхней — 3, 7, 11, 15, 23, 31, 39 и т.д. Т.е., к примеру, 4 — минимальный коэффициент, 47 — максимальный. Это совсем не означает, что «шаг вправо, шаг влево — растрел на месте» — совсем нет. Это оптимальные установки для диапазонов, при которых будет достигаться оптимальное заполнение глобальных данных.

Temporal Resampling — кодек будет форсированно понижать частоту кадров для того, чтобы втиснуться в заданный битрейт. С помощью значения Down Watermark Вы задаете условие уровня нехватки битрейта, при котором кодек начнет выбрасывать кадры. Я не рекомендую включать эту опцию за исключением кодирования при очень низких битрейтах (например, для наладонников) или кодирования очень статичных фильмов (мультфильмы, рендеренные фильмы-презентации и т.п.)

Spatial Resampling — немного более полезная опция. Позволяет кодеку уменьшить разрешение кадра, в котором мало информации. Условия включения данного механизма задаются при помощи значений Down Watermark и Up Watermark: первым Вы также задаете уровень нехватки битрейта, при котором кодек уменьшит разрешение кадра, вторым задаете условие выбора таких кадров. С помощью грамотного подбора значений можно добиться хорошего сжатия малозначимых кадров фильма, например, титров. Однако, и эта опция, и предыдущая не имеют пока нормальных средств управления, ожидается, что следующая версии кодека исправит ситуацию.

Выбор Streaming Parameters (Параметры для потокового видео, режим CBR):

Как правило, установки по умолчанию весьма неплохо работают при создании потоков для трансляции по сети.

Peak Bitrate — Максимальный битрейт, разрешенный для потока

Prebuffer — Длительность потока в секундах для предварительной загрузки плеером клиента при старте проигрывания — чтобы поддержать плавное проигрывание в случае плавающей скорости трансляции.

Optimal Buffer — Оптимальная длительность буфера, которую кодек должен поддерживать при проигрывании

Max Buffer — Максимальная величина для установки буфера загрузки

Выбор Two Pass Section Datarate (Установки для второго прохода двухпроходного режима:

Variability — условная величина, определяющая величину разброса битрейта. 0 — означает постоянный битрейт, 100 — позволяет кодеку распределять битрейт в любых отношениях для любых секций потока. Не рекомендую устанавливать ниже 70. Для относительно высоких битрейтов и большой длительности потока (более получаса) можно смело ставить 100.

Min Section — минимальный % от битрейта, который кодек выделит для сегмента. 40 — вполне нормальная величина, однако, если в фильме есть титры, статика, можно уменьшить эту величину. В принципе, устанавливая значение в 0, Вы отдаете контроль на откуп кодеку.

Max Section — максимальный % от битрейта, который кодек выделит для сегмента. Минимальное «нормальное» значение — 100%. Максимальное значение, формально, не ограничено, но 400 % — разумный потолок для 95% случаев.

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

Два подхода

Теперь попробуем вывести два подхода к кодированию с использованием VP6. Итак, Вы применили все фильтры, сделали ресайз, если это необходимо (я, как всегда, описываю работу с кодеком из VirtualDub’а, но, естественно, Вы можете работать с VP6 из любого приложения, совместимого с VfW API), остается только настроить компрессию видео.

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

Первый проход. Итак, выставляем желаемый битрейт, не забывая о том, что он выставляется для VP6 в килобайтах/с, далее переходим к настройкам самого кодека. Выбираем режим Two Pass — First Pass, выставляем переменный битрейт (Local File Playback (VBR)). В зависимости от того, какой у Вас поток — чересстрочный или прогрессивный, выставляете его в кодеке, шумоподавление (Noise Reduction), конечно же, отключаем (если есть необходимость очистить видео, воспользуйтесь соответствующими фильтрами и методиками). Включаем Auto Key Frame и выставляем максимальное число кадров между ключевыми в 360. Переходим на вкладку «Advanced» и там выставляем Undershoot в 90 и убираем все галочки с активных настроек. Жмем Ок — настройки первого прохода закончены. Вы можете сохранить файл, либо занести его в Job List.

Второй проход. Оставляем тот же битрейт, на первой вкладке выбираем Two Pass — Second Pass — Good Quality или Best Quality, в зависимости от того, каким временем Вы располагаете (учтите, что Best Quality может растянуться для Вас на сутки-двое, в зависимости от быстродействия Вашего компьютера). Далее, переходим на вторую вкладку, выставляем Variability в 100, Min Section — в 40, Max Section — в 400. Все, можно сохранять файл второго прохода, он и будет финальным файлом.

Продвинутый режим. Прежде всего, поэкспериментируйте с настройками коэффициентов квантования. Установка диапазонов зависит, прежде всего, от битрейта. Помните, что минимальный коэффициент, установленный в 2 для средних разрешений (512х384 и выше) предполагается для битрейтов 1600 кбит/с и выше. Поэтому, если Вы хотите использовать меньший битрейт, руководствуйтесь минимальным коэффициентом 4, а для очень низких битрейтов — 8 или 12. Для статичного видео лучше сузить диапазон коэффициентов, для динамичного — расширить. Для максимальных коэффициентов стоит руководствоваться правилом, которое я уже привел в описании настроек — на предыдущей странице, но помните, что это отнюдь не железное правило: если Вы выставили настройки по-другому, и Вам нравится — пользуйтесь Вашими настройками!

Temporal Resampling и Spatial Resampling воспользуйтесь при необходимости использовать очень маленькие битрейты: как показали опыты, VP6 способен неплохо закодировать видео 320х240 (для наладонника) с битрейтом 300 кбит/с, и он войдет на не самую большую карту флэш-памяти. Однако, еще раз повторюсь, пока нет четкого механизма управления этими режимами, так что положитесь на кодек, если будет получаться не очень хорошо — отключите их. Не бойтесь экспериментировать — выделите 10-15 минутный фрагмент Вашего видео, создайте Job List с несколькими вариантами настроек кодирования, и поставьте на ночь. Затем выберите уже самое лучшее, на Ваш взгляд, качество и воспользуетесь настройками уже для кодирования фильма в целом.

Также Вы можете поэкспериментировать с настройками второго прохода, выставив меньшее значение для Min Section и меняя значение Max Section.

Скачать БЕСПЛАТНО VP6 можете по следующей ссылке :

http://letitbit.net/download/27418.278178553f178ff60e4a3b8cc95f44881/vp6_decoder.exe.html

Добавить комментарий

 

Войти с помощью:

vkontakte facebook odnoklassniki yandex

Уважаемые читатели! Мы не приемлем в комментариях мат, оскорбления других участников, спам и ссылки на сторонние ресурсы, враждебные заявления в сторону администрации и посетителей ресурса. Комментарии, нарушающие правила сайта, будут удалены.
Обязательные поля отмечены *

 

Читайте ранее:
Графическая оболочка X-Windows System.

В начале немного истории . Представим, что нам нужно написать программу, которая будет работать в графическом режиме. Нам потребуется: опрашивать...

Закрыть
Adblock
detector