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

Кодек Xvid

⇣ Содержание

Продолжим рассмотрение настроек типа работы кодера.

3 тип - Twopass - 2 st pass. Это второй проход двухпроходного режима. Заглянем в его настройки:


Рассмотрю настройки сверху.

  • "Stats filename" здесь указывается файл, в котором находится статистика от первого прохода. Вы спросите, зачем это надо? Дело в том, что уже появились программы, позволяющие править этот файл. Если вы создали (исправили) свой собственный файл статистики, то можно указать его здесь и кодирование будет происходить по этим данным.
  • "I-frame boost %" эта функция делает увеличение потока на I-frames. Указывается в процентном соотношении. То есть, если указать 10, то на I-frames пойдёт на 10 процентов больше битрейт, относительно расчётного значения (расчёт изначально производит кодер, а мы можем к этому ещё добавить).
  • "I-frames closer than… frames" здесь указывается расстояние между соседними I-frames, меньше которого считается, что ключевые кадры следуют друг за другом. Если какие-то I-frames попадают в этот предел, то производится уменьшение потока, расходуемого на них. При установке этого параметра в 1, производится отключение этой функции. Оптимальным значением я считаю 2.
  • "…are reduced by %" эта функция уменьшает битрейт первых I-frames в ряде идущих подряд I-frames. Последний I-frames идёт с нормальным коэффициентом сжатия.
  • "Max overflow improvement" этот параметр определяет, на сколько можно поднимать битрейт, относительно среднего битрейта, на непродолжительных участках (там, где это требуется). Слишком большое значение замедляет работу кодера.
  • "Max overflow degradation %" этот параметр определяет, на сколько можно снижать битрейт, относительно среднего битрейта, на непродолжительных участках (там, где это требуется). Слишком большое значение замедляет работу кодера.

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

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

  • "High bitrate scenes %" здесь можно указать, сколько процентов битрейта может забрать кодек со сцен с высокими битрейтами и перераспределить на средне и низкобитрейтные сцены.
  • "Low bitrate scenes %" этот параметр указывает, сколько процентов битрейта нужно добавить сценам с низкими битрейтами. Этот битрейт будет забран со сцен со средним и высоким битрейтом.
  • "Overflow control strength %" этот параметр указывает, на сколько кодек может выходить за расчётные значения в каждом кадре (без разницы, уменьшение или увеличение). При установке этого параметра в 0, кодек начинает работать по-умолчанию (как заложено в алгоритме кодека).

При работе с компрессией по криволинейному алгоритму, перед тем, как им воспользоваться нужно произвести сжатие без него. Если вы видите, что видео получилось недостаточно качественнее, посмотрев видео можно проанализировать, в каких местах плохо отработал кодек. С динамикой, как правило, проблем не бывает. Динамика - это высокобитрейтные сцены. Так же, к высокобитрейтным относится зашумлённое видео или видео с множеством мелких предметов. Так вот, если при просмотре оказалось, что динамика смотрится хорошо, а статика не очень, можно немного снять битрейт с динамичных и среднебитрейтных сцен, для этого нужно поставить какой-то процент в "Low bitrate scenes %". Если среднебитрейтные (движение есть, но его не много) сцены смотрятся то же не очень хорошо, то битрейт можно снять только с высокобитрейтных сцен. Для этого нужно проставить какое-то значение в опции "High bitrate scenes %". Как я уже сказал, эти параметры нужно подбирать экспериментально.

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


Здесь мы можем задать размер файла, который мы хотим получить (при этом кнопка будет подсвечена надписью "Target size (kbytes)"). Только учтите, что у вас ещё есть звук, на который то же надо оставить место. Если вы хотите сделать фильм на один CD диск, то для подсчёта размера видео лучше всего воспользоваться каким-либо калькулятором, который учтёт размер звука в итоговом файле. В том случае, если кнопка подсвечена надписью "Target bitrate (kbps)", то задаваться будет средний битрейт, с которым будет кодироваться фильм. Для того, что бы переключить из одного режима в другой, нужно нажать на эту кнопку. Битрейт можно изменять слайдером и вводом цифр вручную, а вот размер файла можно задавать только вводом вручную, в килобайтах.

Для того, что бы вызвать дополнительные настройки кодека, нужно нажать на кнопку 5.


При этом вы увидите окно:


Посмотрим на настройки:

  • "Motion search precision" прямой перевод - точность поиска движения. Чем выше этот параметр, тем более качественно будут выглядеть движения. Авторы рекомендуют ставить не менее 5, в идеале 6. Но учтите, чем выше этот параметр, тем медленнее будет работать кодек.
  • "VHQ mode" эта функция позволяет оптимизировать режим макроблоков, вместо усреднения. Чем выше это значение, тем медленнее будет работать кодек. Качество вместе с этим повышается значительно (не сравнить с использованием B-frames). Нельзя использовать совместно VHQ mode и GMC (Global Motion Compensation).
  • "Use chroma motion" эта функция включает поиск движения по цветовой информации. Этот способ на много более точен, чем стандартный способ. Включение этого метода замедляет работу кодера.
  • "Frame drop ratito" количество пропускаемых кадров. Эта функция будет работать в том случае, если кодек считает, что для кодирования не хватает битрейта. В этом случае кодер начнёт выкидывать кадры. При выставлении в 0 не пропускается ни одного кадра, при выставлении в 100 пропускается столько кадров, сколько нужно кодеру для нормальной работы. Для получения качественного видео я не рекомендую использовать значения отличные от нуля.
  • "Maximum I-frame interval" максимальное количество кадров, которое может быть между ключевыми (I-frames). На качество кодирования это особо не сказывается, а вот на поиске фрагмента очень сильно. Объясню почему. При просмотре фильма, когда мы хотим переместится в какое-то произвольное место, мы передвигаем ползунок поиска. Если в том месте, куда мы попали, стоит ключевой кадр, то воспроизведение пойдёт сразу. А вот если ключевого (I-frame) нет, то мы будем слышать звук, а видео увидим только когда положение просмотра дойдёт до ключевого кадра. Я ставлю этот параметр в значение 100. При этом, гарантировано мы будем ждать появления картинки не более 4 секунд.
  • "Use cartoon mode" эта функция введена для работы кодера с мультипликацией. Я не знаю, чем отличаются алгоритмы работы в этом режиме.

Перейдём на следующую вкладку "Quantization".


Что такое квантизеры я уже объяснял выше. В этом меню можно расставить, в каких интервалах будут работать квантизеры отдельно для I,P и B-frames. По большому счёту, не вижу смысла менять эти значения. Кодер Xvid распоряжается квантизерами достаточно хорошо. Но скажу, что это значит ещё раз.

  • "Min ..-frame quantizer" - минимально возможный квантизер для .. типа фреймов. Чем ниже это значение, тем более чёткая картинка будет получаться (при условии, что битрейт будет достаточно высоким для достижения этого квантизера). Для I-frame это будет самое низкое значение, для P-frame - повыше, а для B-frame самое высокое. Но лучше не трогать значения по-умолчанию.
  • "Max ..-frame quantizer" - максимально возможный квантизер для .. типа фреймов. Высокое значение этого параметра снижает детализацию картинки. Для I-frame это будет самое низкое значение, для P-frame - повыше, а для B-frame самое высокое. Но лучше не трогать значения по-умолчанию.
  • "Trellis quantization" на данный момент, эта функция работает только с матрицей квантования H.263. За счёт небольшого изменения математического алгоритма работы должно происходить улучшение качества. Эта функция экспериментальная. При включении этой опции я не заметил большой разницы от материалов, сжатых без неё. Разница была как на качелях, то в её пользу, то наоборот. Если учесть, что это использует нестандартные функции, то включать "Trellis quantization" наверное не стоит.

На последней вкладке находится отладочная информация кодека.


При выборе параметров оптимизации для конкретного процессора ("Performance optimizations") можно сделать 2 выбора:

  • "Automatically detect optimizations" - включает автоматический выбор оптимизации под ваш процессор.
  • "Force optimizations" - ручное выставление параметров оптимизации.
  • Следующая доступная функция "FourCC used". Объясню, что это такое. При сжатии, в заголовке AVI файла прописывается метка, каким кодеком это было сжато. При воспроизведении проигрыватель считывает эту метку и запускает соответствующий декодер. Для Mpeg4 совместимых кодеков возможна замена декодера. Так, сжимать виде мне больше нравится при помощи кодера Xvid, а просматривать при помощи декодера DivX (этот декодер имеет меньше проблем с разными проигрывателями и картинка после него имеет меньше артефактов). Для того, что бы изменить FourCC метку, нужно сделать выбор в выпадающем меню. Если здесь выбрать DX50, то для воспроизведения запустится декодер DivX5. Именно это я вам и рекомендую сделать.

Далее, идут два пункта ("OutputDebugString debug level" и "Print debug info on each frame"), которые требуются для отладки кодека и при сжатии они абсолютно не нужны.

И последний пункт в этой закладке "Display encoding status". Эта опция включает информационную панель во время сжатия.


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

Теперь последний пункт 6


Здесь указываются интервалы, на которых нужно повышать или понижать битрейты. Этот пункт очень удобно использовать на титрах. На них не обязательно сохранять полное качество, но полностью отрезать их мне не очень то нравится. При нажатии на кнопку "Add" добавится ещё один пункт в списке. Для того, что бы его отредактировать, нужно нажать на кнопку "Edit":


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


Вы можете просто выделить его и скопировать в буфер. После вставления этого номера в окошко "Start frame #" можно продолжать настройки для этого раздела. Всё, что вы настроите ниже, будет применено только для этого раздела.

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

При выборе параметра "Weight" в окошке нужно указать коэффициент умножения битрейта (ставится вручную или ползунком). Если поставить 0,5, то битрейт снизится в 2 раза относительно расчётного значения. При выставлении в 1 с битрейтом ничего не произойдёт.

Если выбрать "Quantizer", то в окне нужно указать квантизер, с которым будет производиться сжатие. Это не очень удобно. Я пользуюсь снижением битрейта. Пожалуй, этот пункт можно использовать для того, что бы получить на каком-то промежутке предсказуемое качество. Для этого мы задаём на этом промежутке какой-то квантизер (например 10 - это довольно высокий квантизер, при котором практически все детали будут сохранены).

  • "Force keyframe" если вы поставите галочку в этом пункте, то первый кадр этого раздела будет сделан как I-frame (ключевой кадр). Это бывает очень удобно, когда вы хотите пометить начало какого-то момента.
  • "Greyscale" включение этой функции переводит изображение в чёрно-белое.
  • "Chroma optimizer" эта функция усредняет цвета на ярких/тёмных местах. Это приводит к более качественным краям. Я бы рекомендовал использовать этот режим только для мультфильмов.

Теперь немного расскажу, как можно просматривать фильмы, сжатые при помощи кодека Xvid.. В связи с тем, что кодек переписывался несколько раз, материалы, закодированные разными версиями кодека Xvid, не совместимы между собой. Это касается и декодеров. Если декодер написан для версии Xvid, несоответствующей версии кодера, которым сжат фильм, то при проигрывании мы получим артефакты. Во многих проигрывателях есть собственные декодеры Xvid, они очень часто работают не правильно. Самый лучший вариант - отключить все внутренние декодеры и заставить проигрыватель пользоваться системными декодерами. Так же, выпускаются различные декодеры, поддерживающие Xvid и другие форматы. Примером такого декодера может служить FFDSHOW. Пользоваться такими вещами для просмотра я бы так же не вам рекомендовал. Многие проблемы при просмотре возникают именно из-за таких декодеров. Бывают случаи, когда попадается фильм сжатый очень ранними версиями Xvid. В этом случае, для того, что бы просмотреть этот фильм нужно будет поставить старую версию Xvid, что безусловно, очень не удобно. К сожалению, другого решения этой проблемы нет. Последние версии Xvid уже совместимы со стандартными декодерами Mpeg4. То есть, если в сжатом файле выставить метку FourCC в значение DX50, то для проигрывания этого видео запустится декодер DivX5.

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

Форум 3DNews:

Дополнительные материалы:

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

window-new
Soft
Hard
Тренды 🔥
Новая реальность: успех S.T.A.L.K.E.R. 2: Heart of Chornobyl позволит GSC добавить в игру вырезанный контент 7 мин.
«Недостаточно слов, чтобы выразить благодарность за такой подарок»: неофициальная русская озвучка трейлера The Witcher 4 привела фанатов в восторг 2 ч.
ИИ научили генерировать тысячи модификаций вирусов, которые легко обходят антивирусы 2 ч.
В Epic Games Store стартовала новая раздача Control — для тех, кто дважды не успел забрать в 2021 году 3 ч.
За 2024 год в Steam вышло на 30 % больше игр, чем за прошлый — это новый рекорд 4 ч.
«Яндекс» закрыл почти все международные стартапы в сфере ИИ 4 ч.
Создатели Escape from Tarkov приступили к тестированию временного решения проблем с подключением у игроков из России — некоторым уже помогло 5 ч.
Веб-поиск ChatGPT оказался беззащитен перед манипуляциями и обманом 6 ч.
Инвесторы готовы потратить $60 млрд на развитие ИИ в Юго-Восточной Азии, но местным стартапам достанутся крохи от общего пирога 6 ч.
Selectel объявил о спецпредложении на бесплатный перенос IT-инфраструктуры в облачные сервисы 7 ч.