Сегодня 25 декабря 2024
18+
MWC 2018 2018 Computex IFA 2018
реклама
Звук и акустика

Кодек DivX

⇣ Содержание
Автор: Евгений Сучев


Продолжу начатый мною обзор кодеков. Рассмотрим теперь кодек DivX. Примерно 4 года назад появился кодек DivX3. Пользователи очень заинтересовался этим кодеком. Основание тому было самое прямое. DVD диски в то время были очень дороги (да и DVD проигрыватели были не из дешёвых), а после сжатия DivX3 фильм влезал на обычный CD диск (который был значительно дешевле).

Качество же после сжатия DivX3 было довольно не плохим (при продолжительности фильма не более 1,5 часа). Если "посмотреть в корень", то DivX3 был взломанной версией кодека Mpeg4 от компании Microsoft. После этого взлома кодек Mpeg4 стал общедоступным. Для сжатия при помощи него была написана программа - VirualDub. Но качество сжатия оставляло желать лучшего, и программисты пошли дальше. Эта программа была доработана и на свет появилась NanDub, которая была заточена исключительно на работу с DivX3 и Mpeg4. Какое-то время кодек DivX3 оставался без конкурентов (мы не смотрим на QuickTime, RealMedia, WMV, качество их было ниже). На взломе Mpeg4 было решено не останавливаться, и на свет начали появляться кодеки DivX4. Было выпущено огромное множество релизов DivX4 (13 штук). Кардинально в них ничего не изменялось, просто вносились небольшие правки.

Основной идеей был уход от клейма "Mpeg4" и в то же время оставаться ISO совместимым кодеком. Итак, в начале 2002 года появился кодек DivX5, который шёл как независимый продукт, и был ISO совместим. PRO версии начали продавать. DivX5 постоянно совершенствовался и развивается до сих пор. На данный момент вышла версия 5.1.1. Вот её то мы и рассмотрим.

Про DivX5.1.1 могу сказать одно - это очень медленный кодек, но от прогресса никуда не уйдёшь, как и корпорация Microsoft заставляет нас переходить на NT ядро, компания DivX заставит перейти на последние релизы.

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


На вкладке "General" находятся настройки кодека, относящиеся к самому кодеку. Начнём сверху. "Selected profile". Здесь можно произвести настройку профиля работы кодека. В качестве настроек, управляемых из профиля выбраны: Quarter Pixel, GMC (Global Motion Compensation), Bidirictional Encoding, Video Resolution и Video frame rate. Теперь обо всём по-порядку. Нажав на копку "Select profile Wizard" попадаем в это меню:


Здесь можно выбрать какой-нибудь профиль или отключить их и произвести все настройки на своё усмотрение. Чекбокс "Disable profiles" отключает использование профилей. При этом, выдаётся предупреждение о том, что полученное видео может не проигрываться на устройствах, совместимых с Divx (аппаратных проигрывателях). Посмотрим, что повлечёт за собой включение любого из этих профилей или их отключение.

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


Опции "Use Quarter Pixel" и "Use GMC" могут быть доступны только в случае отключения профилей на предыдущей странице.

Опция "Use Quarter Pixel" включает вычисление координат с точностью до четверти пикселя. Это повышает чёткость особенно на низких разрешениях, но вместе с этим, добавляет шум на изображение. Естественно, просто так это не происходит. Включение Quarter Pixel повышает загрузку процессора и увеличивает поток, используемый для этого. Включать эту опцию я не рекомендовал бы.

Опция "Use GMC" включает Global Motion Compensation - компенсацию движения. Она начинает проявлять своё действие, когда идёт панорамирование, наезд или отъезд на объект, а так же при вращении. Задумка конечно хорошая, но использовать я так же не рекомендовал бы.

Далее, посмотрим, что даёт выбор какого-либо профиля. По большому счёту, я не люблю пользоваться профилями - они вносят определённые ограничения в работе. Включение профиля "Handheld" подразумевает кодирование с параметрами, соответствующим переносным устройствам. Рекомендуемое максимальное разрешение для этого профиля 176*144 при 15 кадрах в секунду. При этом, должны быть отключены B -frames и сжатие чересстрочного материала. Максимальный средний битрейт для этого профиля может быть 128 килобайт в секунду.

Включение профиля "Portable" подразумевает кодирование с параметрами, соответствующим портативным устройствам. Рекомендуемое максимальное разрешение для этого профиля 352*240 при 30 fps и 352*288 при 25 fps. При этом, могут быть включены B -frames и отключено сжатие чересстрочного материала. Максимальный средний битрейт для этого профиля может быть 768 килобайт в секунду.

Включение профиля "Home Theater" подразумевает кодирование с параметрами, соответствующими аппаратным проигрывателям, игровым приставкам и другим устройствам, которые могут проигрывать Divx. Рекомендуемое максимальное разрешение для этого профиля 720*480 при 30 fps и 720*576 при 25 fps. При этом, могут быть включены B -frames и сжатие чересстрочного материала. Максимальный средний битрейт для этого профиля может быть 4000 килобайт в секунду.

Включение профиля "High Def" подразумевает кодирование с высоким разрешением. Воспроизведение этих материалов будет возможно только на компьютере. Рекомендуемое максимальное разрешение для этого профиля 1280*720 при 30. При этом, могут быть включены B -frames и сжатие чересстрочного материала. Максимальный средний битрейт для этого профиля может быть 8000 килобайт в секунду.

Если мы включим какой-либо профиль, то нужно произвести настройку кодека в соответствии с этим профилем:


Для профилей, где доступен выбор "Use Bidirectional Encoding", лучше сделать этот выбор. Это включает работу кодека с использованием B-frames. Что это такое, я подробно описал в статье про кодек Xvid. Использование этого типа кадров даст небольшой прирост качества.

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

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

Эти функции сделаны в составе кодека "для ленивых". Кто не заботится о высшем качестве получаемого материала, а хотят быстрых результатов.

Итак, мои рекомендации по выставлению профилей. Если вы производите сжатие для высококачественного воспроизведения на компьютере или аппаратном проигрывателе, то нужно выбрать "Disable profiles" в первом окне выбора профилей и "Use Bidirectional Encoding". Больше вам ничего не потребуется для получения видео, которое будет воспроизводится без проблем.

Теперь, вернёмся на вкладку "General" главного окна настройки кодека:


Если ранее у вас стояла другая версия кодека DivX или вы что-то сделали, сами не зная что (да и вообще, перед началом работы не помешает), нажмите кнопку "Restore defaults", которая находится внизу этого окна.

Теперь, пойдём смотреть на это окно сверху вниз, в соответствии с нумерацией.

1 Ползунок "Performance/Quality" позволяет выбирать между скоростью кодирования и качеством получаемого видео. В зависимости от выбранного профиля работы, можно выбрать четыре профиля работы:

Положение "Fastest" не производит анализ на наличие движения в видеоматериале. Это напоминает работу MJPEG кодеков, когда сжатие происходит внутри кадра. Короче говоря, кодек превращается в кодек с пространственным сжатием. При включении этого режима невозможна работа следующих функций: Quarter pixel, Global motion compensation, Bidirectional encoding, Psychovisual enhancement, MV re-use, Scene change threshold.

Положение "Standard" работает аналогично самому медленному режиму кодека DivX 5.05. В этом режиме работают все функции кодека.

Положение "Slow". В этом режиме кодер работает уже значительно медленнее (примерно в 4-5 раз), чем в режиме "Standard". Но по заявлению разработчиков DivX в нём изменён механизм оценки битрейта, что должно повлечь улучшение качества. По результатам моих испытаний, трёхпроходное видео в режиме "Standard" проигрывает по качеству двухпроходному в режиме "Slow". Это режим наиболее оптимальный.

Положение "Slowest". Как можно судить из названия, это самый медленный режим кодека. При этом качество должно значительно повысится. Реально же, пользоваться этим режимом вряд ли стоит.

2 "Variable bitrate mode" В выпадающем меню есть возможность выбора режима работы кодека:

"1-pass" - это однопроходный режим работы кодека с переменным битрейтом. Для этого режима задаётся средний битрейт, которого должен придерживаться кодек. Реально, битрейт получится на усмотрение кодека. Этот режим можно рекомендовать для захвата и для кодирования в очень сжатые сроки. Но сам процесс захвата в Divx не является удачной идеей. Обоснование этого я написал в статье про захват.

"1-pass quality-based" - это однопроходный режим работы кодека с переменным битрейтом, но постоянным квантизером. Для этого режима задаётся квантизер, который будет возможно выставить немного ниже данной вкладки:


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

"Multipass, 1 st pass" - Это первый проход двухпроходного режима. Про двух проходный режим я так же подробно описал в статье про кодек Xvid. Вкратце напомню. Для улучшения качества кодирования и 100% попадания в битрейт, нужно применять двухпроходное кодирование. В течении первого прохода, происходит сбор статистики о видеоматериале и запись в файл статистики. Во время второго прохода, кодер, беря информацию из файла статистики, производит сжатие видеоматериала. Для первого прохода задаётся битрейт, с которым будет кодировтся фильм.

"Multipass, n th pass" - Это следующий после первого прохода режим. Если мы поставим его после первого прохода и уберём галочку "Update log file" в поле 5, то можно будет на этом закончить - мы получим готовый к просмотру файл видео в двухпроходном режиме. А можно ещё немного улучшить качество сжатого материала. Для этого, оставляем на месте галочку "Update log file" (которая стоит по-умолчанию) и делаем второй проход. При этом происходит обновление файла статистики. Далее, повторяем этот проход, но со снятой галочкой "Update log file". Это уже получится не двух проходное видео, а трёх проходное. Для этого режима задаётся битрейт, с которым будет кодироваться фильм (А) и максимально достижимый битрейт на динамических сценах (В).


В целом, при заданном профиле, максимально достижимый битрейт (В), вычисляется автоматически и его нельзя изменить вручную. При отключённых профилях, он так же вычисляется автоматически и его можно исправить, но нет смысла это делать. Напомню, как лучше всего производить много проходное видео. Я все операции делаю в программе VirtualDub, как в наиболее удобной для себя. После настроек фильтров в VirtualDub нужно переходить к настройке кодека. Покажу конкретную последовательность действий при сохранении. Для того, что бы кодировать двух проходное видео, нужно записать скрипт в VirtualDub и запустить его на исполнение. Самого скрипта вы писать не будете, только произведёте определённые действия в VirtualDub. Итак, добавление первого прохода в скрипт:




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




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

Следующая страница →
 
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Вечерний 3DNews
Каждый будний вечер мы рассылаем сводку новостей без белиберды и рекламы. Две минуты на чтение — и вы в курсе главных событий.

window-new
Soft
Hard
Тренды 🔥
Apple хочет самостоятельно защищать свои интересы в антимонопольном расследовании против Google 3 ч.
Гладко было на бумаге: забагованное ПО AMD не позволяет раскрыть потенциал ускорителей Instinct MI300X 9 ч.
Netflix подал в суд на Broadcom, заявив, что VMware нарушает его патенты в области виртуализации 9 ч.
На Nintendo Switch выйдет подражатель Black Myth: Wukong, который позиционируется как «одна из важнейших игр» для консоли 10 ч.
Датамайнеры нашли в файлах Marvel Rivals следы лутбоксов — NetEase прокомментировала ситуацию 12 ч.
Надёжный инсайдер раскрыл, когда в Game Pass добавят Call of Duty: World at War и Singularity 13 ч.
Лавкрафтианские ужасы на море: Epic Games Store устроил раздачу рыболовного хоррора Dredge, но не для российских игроков 13 ч.
VK запустила инициативу OpenVK для публикации ПО с открытым кодом 14 ч.
CD Projekt Red объяснила, почему оставила мужскую версию Ви за бортом кроссовера Fortnite и Cyberpunk 2077 16 ч.
Открытое ПО превратилось в многомиллиардную индустрию 16 ч.