Ref frames что это
Содержание
Presets [ ]
—profile [ ]
(Force the limits of an H.264 profile)
Указываем уровень совместимости, в зависимости от оборудования. Так как не все железные плееры могут справиться с high.
—preset [ ]
(Use a preset to select encoding settings)
(Tune the settings for a particular type of source or situation)
Выбираем нужную оптимизацию, которая установит оптимальные настройки для выбранного вами типа видео.
—slow-firstpass [ ]
(Enable slow first pass)
Включаем «медленный» первый проход.
Frame-type options [ ]
Минимальное расстояние между ключевыми/IDR кадрами.
—no-scenecut [ ]
(Disable adaptive I-frame decision)
Полное отключение адаптивных I-кадров.
—scenecut [ ]
(How aggressively to insert extra I-frames)
Этот параметр определяет на сколько часто будут использоваться дополнительные I-кадры. x264 высчитывает метрику каждого кадра, что бы определить насколько он отличается от предыдущего. Если полученное значение ниже, чем установлено для scenecut, то энкодер помещает в этом месте I-кадр, если выше – вставляет ключевой/IDR кадр. Полезность определения смены сцен заключается в оптимальной расстановке I-кадров в местах резкой смены сцен. Это повышает качество, но слишком частая смена приведёт к напрасной трате битрейта.
—intra-refresh [ ]
(Use Periodic Intra Refresh instead of IDR frames)
Запрещает использование IDR-кадров.
(Number of B-frames between I and P)
Количество последовательных B-кадров между I- и P- кадрами. B-кадры – это кадры, в которых закодированы изменения не только от предыдущих кадров, но и от последующих. Имеют еще большую степень сжатия, чем P-кадры, но также и наихудшее качество. B-кадры подобны P-кадрам, кроме того, они могут использовать предсказание движения от будущих кадров также. Это может привести к значительному улучшению степени сжатия.
—b-adapt [ ]
(Adaptive B-frame decision method)
Позволяет x264 адаптивно решать, где будут использоваться B-кадры, уменьшая количество B-кадров там, где это не нужно.
—b-bias [ ]
(Influences how often B-frames are used)
Контролирует количество B-кадров, которые будут использованы вместо P-кадров.
—b-pyramid [ ]
(Keep some B-frames as references)
Позволяет B-кадрам ссылаться на другие В-кадры, тем самым увеличивая эффективность использования 2-х или более B-кадров.
—open-gop [ ]
(Use recovery points to close GOPs)
—no-cabac [ ]
(Number of reference frames)
Параметр задает количество используемых рефернсных кадров. Определяет, сколько предыдущих кадров может быть связано (заимствование макроблоков) с P- или B-кадрами.
—no-deblock [ ]
(Disable loop filter)
Отключение фильтра подавления блочности.
(Loop filter parameters)
—slices [ ]
(Number of slices per frame)
Указываем количество частей (квадратов), на которые будет разбит кадр.
—slice-max-size [ ]
(Limit the size of each slice in bytes)
Задаем максимальное размер slice в байтах.
—slice-max-mbs [ ]
(Limit the size of each slice in macroblocks)
Задаем максимальный размер slice в макроблоках.
(Enable interlaced mode (top field first))
(Enable interlaced mode (bottom field first))
—constrained-intra [ ]
(Enable constrained intra prediction)
Включаем ограниченное внутреннее предсказание, необходимое для base layer.
—pulldown [ ]
(Use soft pulldown to change frame rate)
—fake-interlaced [ ]
(Flag stream as interlaced but encode progressive)
Обозначает видеопоток как чересстрочный, даже если он таковым не является. Позволяет кодировать видео для Blu-ray с частотой кадров в 25 и 30 в секунду.
—frame-packing [ ]
(For stereoscopic videos define frame arrangement)
Если Вы кодируете 3D-видео, то этот параметр говорит вашему декодеру о том, кокой именно тип 3D-видео используется.
CABAC: что скрывается за этими пятью буквами
Статья для специалистов и тех, кто хочет им стать. Разбираемся, что такое контекстно-адаптивное двоичное арифметическое кодирование.
Перечислим еще раз основные этапы обработки видеокадра при кодировании стандартом H.265/HEVC (рис.1). На первом этапе (с условным названием «Разбиение на блоки») кадр разбивается на блоки CU (Coding Unit). На следующем этапе изображение внутри каждого блока предсказывается с использованием пространственного (Intra) или временного (Inter) предсказания. При выполнении временного предсказания блок CU может быть разбит на подблоки PU (Prediction Unit), каждый из которых может иметь собственный вектор движения. Значения предсказанных отсчетов вычитаются из значений отсчетов кодируемого изображения. В результате для каждого блока CU формируется разностный двумерный сигнал Residual. На третьем этапе двумерный массив отсчетов разностного сигнала разбивается на блоки TU (Transform Unit), каждый из которых подвергается двумерному дискретному косинус-преобразованию Фурье (исключение здесь составляют блоки TU отсчетов яркости, полученных путем Intra-предсказания, размером 4×4, для которых используется дискретное синус-преобразование Фурье).
На следующем этапе спектральные Фурье-коэффициенты разностного сигнала квантуются по уровню. Информация о всех произведенных на каждом из четырех этапах действиях, позволяющая восстановить закодированное изображение, поступает на вход энтропийного кодера. Это последний этап. Здесь поступающие данные подвергаются дополнительному сжатию без потерь по алгоритмам контекстно-адаптивного двоичного арифметического кодирования (Context Adaptive Binary Arithmetic Coding, сокращенно CABAC). Попробуем разобраться, что же означает эта последовательность из пяти слов.
Начнем со словосочетания «арифметическое кодирование». Чтобы проиллюстрировать идею арифметического кодирования рассмотрим простой пример. Попробуем сжать информационное сообщение, состоящее из 20 символов. Видов символов у нас будет всего три: символ «a», символ «b» и символ «EOF», который будет индицировать конец сообщения. Само сообщение будет следующим: . Процедура сжатия будет заключаться в рекурсивном делении текущего интервала. Возьмем в качестве начального интервала [0, 1). Разобьем его на интервалы, длина которых будет пропорциональна частоте появления символов в сообщении. Символ «b» появляется в сообщении в 17 случаях из 20 возможных. Символ «a» — в 2 случаях из 20. Символ «EOF» появляется один раз. После разбиения будем иметь три интервала: [0, 2/20), [2/20, 19/20), [19/20, 1). Первый символ в сообщении — символ «b». В качестве текущего теперь выбираем отрезок, длина которого пропорциональна частоте появления символа «b», т. е. текущим отрезком становится [2/20, 19/20). Повторяем процедуру разбиения текущего интервала, выбирая в качестве нового интервала тот, длина которого соответствует частоте появления в сообщении очередного символа. Процедуру повторяем до конца сообщения. Последовательность действий при нашем кодировании оформим в виде таблицы.
Результатом рекурсивного деления текущего интервала стал выделенный жирным в таблице интервал, границы которого приведем без округления: [0.142948471255693, 0.142980027967343). В двоичной системе счисления полученный интервал представляется в виде [0.001 001 001 001 100 00100010101100001000011100111000000010, 0.001 001 001 001 101 00101011011010000000110011101010011101). Число 0.001 001 001 001 100 1 (в десятичной системе счисления это число 0.142959594726563), принадлежащее полученному интервалу, является результатом кодирования нашего сообщения. Это число содержит 16 бит. Таким образом, из сообщения длиной 20 символов мы получили 16-ти битовый код. Мы сжали наше сообщение!
Попробуем теперь его декодировать. Для этого опять возьмем исходный интервал [0, 1). Разделим его в соответствии с частотами появления символов в сообщении. Результат этого разбиения, очевидно, представлен в Таблице 1 в строке с номером итерации 1. Полученное число 0.142959594726563 принадлежит среднему интервалу [0.1, 0.95). Таким образом, первый декодированный символ — это символ «b» (что отражено в пятом столбце таблицы в первой строке). Текущим интервалом становится [0.1, 0.95). Опять делим его на три части в соответствии с частотами появления символов в сообщении. Результат разбиения показан во второй строке Таблицы 1. Число 0.142959594726563 принадлежит первому из интервалов, полученных при делении, [0.1, 0.185). Этот интервал имеет длину, пропорциональную частоте появления символа «a». Этот символ и является результатом декодирования на второй итерации. Из сказанного выше очевидно, что весь процесс декодирования уже отображен в Таблице 1. Итеративное деление текущего интервала при декодировании будет продолжаться до тех пор, пока не будет декодирован символ «EOF», сигнализирующий о конце сообщения.
Несмотря на то, что рассмотренные процедуры итеративного деления текущего отрезка действительно реализуют арифметическое кодирование и декодирование сообщения, они очень мало похожи на те действия, которые выполняются при кодировании/декодировании по алгоритмам CABAC. Прежде всего, это связано с двумя существенными, с точки зрения практического использования, недостатками рассмотренных процедур кодирования и декодирования. Во-первых, при кодировании мы получили результат только после того, как обработали все сообщение. До этого момента ни один бит результата нам не известен. Для начала процедуры декодирования нам необходимо знать весь набор битов, представляющий закодированное сообщение. Второй недостаток также достаточно очевиден из приведенного примера. При итеративном делении текущего отрезка на каждой итерации возрастает точность, необходимая для представления границ интервалов. Таким образом, чем длиннее сообщение, тем больший временной интервал (задержка) необходим в кодере и декодере для его обработки, тем выше точность (разрядность вычислений) требуется для реализации алгоритмов арифметического кодирования.
Отметим здесь несколько достаточно очевидных моментов, касающихся процедуры кодирования. Совершенно очевидно, что в том случае, когда текущий интервал полностью лежит в области от 0 до ½, текущий бит результата кодирования будет нулевым. Аналогично, в том случае, когда текущий интервал полностью лежит в области от ½ до 1, текущий бит результата кодирования будет единичным. В том же случае, когда левый конец текущего интервала меньше ½, а правый больше, но оба не отстоят от ½ более чем на ¼, значение текущего бита результата неизвестно. Однако, можно уверенно утверждать, что следующий бит результата будет иметь противоположное к текущему значение. После выдачи каждого текущего бита результата кодирования длину интервала можно удвоить. Все это позволило ввести процедуру удвоения длины текущего интервала, которая позволяет обойти оба указанных выше недостатка арифметического кодирования.
В стандарте эта процедура назвается ренормализацией. В процессе ренормализации при кодировании сразу выдаются биты результата кодирования, а длина текущего интервала удваивается. Ренормализация выполняется итеративно после выбора каждого текущего интервала. Итерации продолжаются до тех пор, пока текущий интервал попадает полностью в один из трех интервалов: [0, 0.5), [0.25, 0.75), [0.5, 1). Если текущий интервал не лежит полностью ни в одном из этих трех интервалов, то итерации прекращаются. В противном случае, когда текущий интервал лежит в одном из этих трех, выполняется один из трех наборов действий. Таким образом, каждый набор соответствует своему интервалу.
Если текущий интервал полностью принадлежит интервалу [0, 0.5), то выдается бит результата 0 и после него столько битов 1, сколько было накоплено на предыдущих символах. (Количество единиц, выдаваемых в результирующий битовый поток равно значению счетчика, называемого в стандарте bitsOutstanding. После вывода единичных битов счетчик сбрасывается в 0). Значения границ текущего интервала удваивается. В результате, естественно удваивается и длина интервала. Для краткости назовем это удвоение «расширением интервала вправо».
Если текущий интервал полностью лежит внутри интервала [0.5, 1), то выдается бит результата 1 и после него столько битов 0, сколько было накоплено на предыдущих символах (количество битов 0 опять равно значению счетчика bitsOutstanding, счетчик сбрасывается в 0). Границы интервала смещаются влево так, чтобы расстояние от них до 1 удвоилось. Назовем это удвоение «расширением интервала влево».
Если текущий интервал полностью лежит внутри интервала [0.25, 0.75), то этот факт необходимо запомнить для последующей выдачи битов результата (увеличить на 1 значение счетчика bitsOutstanding). Левая граница текущего интервала смещается влево так, чтобы расстояние от нее до точки 0.5 удвоилось. Правая граница смещается вправо также с удвоением расстояния от нее до точки 0.5. Назовем удвоение длины интервала в этом случае «расширением интервала в обе стороны».
Кроме того, формализуем процедуру выбора последних двух бит закодированного сообщения, конкретизирующих выбор двоичного числа из полученного итеративным делением интервала. Эта процедура очень проста. Если левая граница полученного интервала меньше 0.25, то последними битами сообщения будет последовательность <0, 1>. В противном случае — это последовательность <1, 0>.
Проиллюстрируем работу процедуры ренормализации на примере кодирования того же 20-ти символьного сообщения
Ref frames что это
Всем доброго времени суток. Приветствую вас в этой теме. Прочитав данный материал вы освоите искусство качественного сжатия видео материала, а также разберетесь в разного рода терминах, относящихся к этой теме.
На написание данного материала меня с подвигло несколько вещей:
1) Все руководства в данном разделе устарели и\или не отражали реального положения вещей, а также не затрагивали какие-либо важные аспекты этой деятельности.
2) Ко мне обращается очень больше количество людей с просьбами обучить их искусству качественного сжатия, на индивидуальные дискуссии уходит очень много времени, да и рассказать все важные вещи к сожалению не получается за раз.
Дабы решить эти две проблемы, было принято решение написать данный материал, который раскрывал бы все детали качественного сжатия видео.
Я решил разбить руководство на две части, которые предназначены для разных групп людей:
1) Первая часть будет содержать руководство для людей желающих в кротчайшие сроки познать это исскуство качественного кодинга особо не вдаваясь в подробности, как и что работает, и для чего служит.
2) Вторая же часть материала предназначена для энтузиастов, которые хотят достичь максимально возможного качества при минимальном объеме файла жертвуя своим времени на доскональное изучение вопроса кодинга.
Начнем! И так, для практики вам понадобится все программное обеспечение описываемое в руководстве, разберемся, что нужно и где его взять.
Разбирать все настройки подробно в этой части руководства мы не будем, остановим свое внимание только на тех, с которыми нам предстоит работать.
Для удобства я выделил красным те параметры, которые нужно изменить.
Frame rate: Количество кадров в секунду, желательно выставлять точно такое же значение, которое вы выставили в Fraps до захвата видео. Оптимально захватывать видео с частотой 25 (для наименьшего объема) или 30 (для более плавного видео) кадров в секунду.
После задания всех нужных нам параметров жмем «OK» и приступаем к своему проекту, начинаем творить «мувик».
Сам процесс творчества в данном руководстве я описывать не буду, ибо данное руководство рассматривает только вопросы качественного сжатия, а не как не самого творчества.
И так, ваш проект полностью готов, пора приступать к рендерингу видео (вывод).
Выставляем Template как показано на скриншоте и жмем кнопочку Custom. Видим окно Custom Template, нас интересует вкладка Video:
Video Format: Кодек, который будет использоваться при кодировании нашего будущего мувика, самым оптимальным для новичка пакетом кодеков я считаю ffdshow, который входит в комплект поставки K-Lite Mega Codec Pack.
Выбираем ffdshow Video Codec и жмем Configure. для конфигурации кодека. Видим окно конфигурации кодека ffdshow:
Все остальные параметры в этой вкладке будут рассмотрены во второй части статьи.
Теперь переходим на вкладку «Audio» для настройки сжатия звука.
Audio: Кодек для звука, выбираем AC-3 ACM Codec, как самый оптимальный установленный в системе.
Attributes: Настройки кодека, в данном случае битрейт, частота дискретизации, количество каналов. Для хорошего качества звука достаточно 160 kbit\s, 44100Hz, Stereo.
Выбираем место сохранения вашего видео, жмем «Сохранить», ждем пока происходит вывод видео, это может занять очень продолжительное время в зависимости от вашего проекта.
После вывода смотрим, что у нас получилось и любуемся качеством.
Первая глава данного руководства завершена, вы научились кодировать видео с хорошим качеством видео и звука. Во второй части руководства мы более детально подойдем к тонкой настройке кодека, разберемся в каждом! параметре кодека и научимся делать максимально качественные мувики при минимальном объеме.
На изучение и осмысления материала может уйти много времени, по этому я рекомендую вам, если вы не энтузиаст остановится на первой части статьи.
Данная глава подразумевает немного другой путь кодирования, чем описанный в первой главе.
В данном случае мы будем использовать вывод из вегаса вашего проекта совершенно без сжатия (ваше видео займет порядка 200гб без сжатия) и уже последующие сжатие с помощью XviD4PSP 5.0 и тонкой настройкой кодека.
Для корректной работы программы необходимы Microsoft Framework 3.0 и K-Lite Codec Pack
После установки программы необходимо произвести некоторые настройки, которые будут использоваться в дальнейшем. Рекомендую установить-снять галочки так же, как на скриншотах, однако опытные пользователи могут произвести настройки на свое усмотрение.
1. НАСТРОИТЬ—>ЯЗЫК (кому какой нравится, у меня русский)
2. НАСТРОИТЬ—>ДВИЖОК ПЛЕЕРА (оставляем DirectShow)
3. НАСТРОИТЬ—>АВТО ОБЪЕДИНЕНИЕ (только DVD)
4. НАСТРОИТЬ—>АВТО ГРОМКОСТЬ (запрещено)
5. НАСТРОИТЬ—>АВТО ОБРЕЗКА (только MPEG файлы) это автообрезка черных полос, обычно черные полосы присутствуют только в DVD исходниках, т.е. в MPEG-2 видео.
6. НАСТРОИТЬ—>АВТО ДЕИНТЕРЛЕЙС (только MPEG файлы) интерлейсное видео обычно только в DVD исходниках.
7. НАСТРОИТЬ—>ПОСЛЕ ОТКРЫТИЯ (середина)
1. Не извлекать звук для превью. Для исключения большинства проблем, связанных с кодированием звука, рекомендуется галочку снять. Эта настройка изначально была предусмотрена для сокращения времени загрузки исходного файла в программу, но большинство проблем, связанных с кодированием звука в XviD4PSP появляется с включение этой настройки. (ОБЯЗАТЕЛЬНО! ГАЛОЧКУ СНЯТЬ)
3. Кодировать все в прогрессивное видео. При установленной галочке, все видео будет кодироваться в прогрессивное, независимо от того какое исходное видео: чересстрочное или прогрессивное. (ОБЯЗАТЕЛЬНО! ГАЛОЧКУ УСТАНОВИТЬ)
5. Обновлять скрипт при изменении настроек аудио/видео кодека. Лучше, что бы эта галочка стояла, т.к. в противном случае при изменении настроек кодирования аудио или видео, эти изменения не будут перезаписаны в скрипт, следовательно, кодирование будет произведено без учета последних изменений. Внимание! При установленной галочке, когда производится изменение скрипта вручную, а после этого изменяются настройки в интерфейсе программы, то изменения, сделанные вручную, стираются из скрипта, следовательно, их необходимо будет вписывать повторно. (ЛУЧШЕ ГАЛОЧКУ УСТАНОВИТЬ)
6. Сначала кроп/ресайз, потом фильтрация. После установки галочки, сначала будет происходить изменение размеров (ресайз) и обрезка (кроп) исходного видео до заданной пользователем геометрии кадра, и уже к этому кадру будет применяться скрипт фильтрации (высокая скорость обработки). И наоборот, при её снятии, сначала будет фильтроваться кадр исходного разрешения, и только потом, он будет обрезаться и уменьшаться в размерах (лучшее качество фильтрации). (НА УСМОТРЕНИЕ ПОЛЬЗОВАТЕЛЯ)
7. При сохранении задания считывать параметры видео из скрипта. После установки галочки, сохранение задания будет производиться на основании скрипта. Галочка необходима в том случае, если вы вносите изменения в скрипт вручную. К примеру, когда добавляете строки для проведения анализа оптимального значения среднего битрейта, включаете/отключаете тот или иной вариант фильтра и т.д. В противном случае, все изменения, внесенные в скрипт вручную, программой учитываться не будут. (ЛУЧШЕ ГАЛОЧКУ УСТАНОВИТЬ)
Остальные вкладки нас не интересуют и содержат параметры, настроенные уже оптимальным образом.
XviD4PSP имеет простейший для понимания интерфейс, единственное, с чем могут возникнуть проблемы, это «настройки видео кодирования».
После загрузки исходного видео в программу, выбора разрешения, типа цветокоррекции, фильтрации и проведения других настроек, приступаем к настройке кодека х264. Для этого нажимаем на шестеренку в пункте «КОДИРОВАНИЕ ВИДЕО». Окно настроек имеет пять вкладок, рассмотрим каждую:
1. Encoding mode: Выбор режима кодирования (ratecontrol метода)
1.1 Constant Quality (CRF)
В режиме Constant Quantizer (постоянного квантователя) каждый кадр кодируется с одинаковым математическим качеством (или квантизером), не обращая внимания на то, сколько битрейта придется потратить, применяя постоянное математическое качество ко всей видео последовательности. В этом режиме итоговый размер файла, и соответственно значение среднего битрейта, непредсказуемы. Файл видео, созданного в режиме QP получится больше по размеру, чем в CRF режиме, при том же визуальном качестве.
Изменение качества на различных кадрах для достижения наилучшего качества последовательности при заданном битрейте. В режиме ABR каждый кадр кодируется с минимально возможным квантователем (лучшее качество), придерживаясь среднего битрейта на указанном времени. В этом режиме итоговый размер достаточно предсказуем. Цифра перед «Pass» обозначает количество проходов (до 3-х). При увеличении количества проходов, время обработки видео увеличивается. Дополнительные проходы позволяют более эффективно распределить битрейт при кодировании в заданный размер. 3-й проход как правило не даёт существенной прибавки в качестве, но может быть полезен при кодировании коротких роликов, когда длительность видеофрагмента слишком мала, чтобы кодек успел за два прохода эффективно просчитать кривую компресии.
Вопрос: для чего в Bitrate режимах используют два прохода (2-Pass)?
Ответ: На первом проходе происходит анализ видео, результат которого во втором проходе создаст оптимизированное кодирование видео. Несколько проходов позволяют кодеку сделать более правильный выбор при решении, насколько сильно будет сжат каждый кадр, исходя из сложности кодируемого материала.
Вопрос: для чего в Bitrate режимах используют три прохода (3-Pass)?
Ответ: На третьем проходе идёт распределение кривой компрессии с учётом полной оценки видеоряда на основе достоверной сложности всех фреймов. На втором проходе, сжав очередной фрейм, кодек пересчитывает кривую на оставшиеся фреймы, чтобы вписаться в заданный размер, т.е. в отличие от CRF или 3 проходного режима в двухпроходном кодировании распределение QP не будет идеально равномерным для каждого фрейма.
Простыми словами, это коэффициент сжатия видео. Низкие значения означают низкую степень сжатия (выше качество) и соответственно больший размер файла на выходе, большие значения, наоборот, сильное сжатие и меньший размер. Значения ниже 16 полезны только для архивного качества, а при значениях выше 30 заметны значительные потери качества.
Рекомендации: диапазон 18-24 – скорее всего, будет приятен для просмотра. Если Вы нуждаетесь в абсолютно совершенном качестве, то можете понизить Q до 16, но это того не стоит. Значения Q в диапазоне 19 – 21.5 – это те значения, при которых изображение будет выглядеть очень хорошо.
Это значение среднего битрейта, с которым будет закодировано видео.
Это примерный размер видео, который вы хотите получить на выходе после конвертирования. Он необходим в тех случаях, когда вы хотите что бы ваше видео помещалось, к примеру, на DVD болванку или другой носитель. Актуален, когда есть ограничения на размер файла на выходе.
Примечание: Примерный размер файла на выходе можно определить самому, для этого необходимо значение среднего битрейта умножить на продолжительность видео (в секундах) и полученное значение разделить на 8 (перевести из бит в байты). Не забывайте что в фильме помимо видео, присутствует и аудио дорожка (или несколько аудио дорожек), которая(ые) тоже имеют какой то размер, его так же можно узнать, если известен битрейт аудио.
Спецификация H.264/AVC подразумевает несколько профилей. Каждый профиль определяет, какие настройки кодека разрешены, а какие недопустимы. AVC Profiles устанавливает профиль для выходного потока видео и тем самым определяет его совместимость с устройством, на котором планируется просмотр. Эта опция отменяет все установки, которые не соответствуют устанавливаемому профилю, в итоге будет гарантирован совместимый поток. Если вы, к примеру, включите CABAC, потом поменяете профиль на Baseline Profile, то CABAC отключится, т.к. его Baseline Profile не поддерживает.
3.1 Baseline Profile: Отключает CABAC, 8x8dct, запрещает использование B frames.
3.2 Main Profile: Отключает 8x8dct.3.3
High Profile: нет ограничений.
Рекомендации: используем High Profile для максимального качества.
Рекомендации: AVC level – 4, для мувиков будет достаточно.
Эта функция предусмотрена для более качественного анализа на первом проходе только в Bitrate режимах. Увеличивает время кодирования. Обычно используется когда нет ограничения по времени и стоит задача сделать видео как можно лучше.
Рекомендации: не включать, имеет смысл для сложного видео и при высокой квантизации по результатам тестов.
Режим кодирования без потерь. При включении данной функции Constant Quality (CRF) или Constant Quantizer (QP) получаю значение – 0.
Рекомендации: не включать
Рекомендации: самый оптимальный вариант (90% случаев) – значения (0;0), однако для кодирования анимации можно использовать (1;1), для некоторых мувиков – (-1;-1).
1.Subpixel ME
(уровень сложности оценки субпиксельной точности векторов движения)
Устанавливает один из десяти уровней сложности оценки субпиксельной точности векторов движения. Чем выше уровень, тем в больших случаях могут быть построены векторы движения повышенной точности.
Первые пять уровней определяют в каком варианте будет использоваться четвертьпиксельная точность (Qpel). Для четвертьпиксельной точности требуется больше информации для кодирования. Но увеличение информации компенсируется тем, что с повышенной точностью может быть построено больше векторов (а значит сжатие будет лучше). Это реализуется за счет использования дополнительной оптимизации – RDO (или RD, Rate–distortion optimization) доступной на следующих уровнях, начиная с шестого. Начиная с восьмого уровня, допускается RDO для векторов движения и intra режимов предсказания. Для функционирования десятого уровня необходимо включение функции Trellis при значении 2- Always (везде), а для включения Trellis, необходимо включение CABAC, что для видео Apple недопустимо. Как следствие, десятый уровень для видео разделов Apple, функционировать не будет. Уровни с RDO медленнее, чем уровни без него, но значительно качественнее.
Все блоки из одного P- или B-кадра могут ссылаться только на один кадр. Однако включение данной опции позволит каждому блоку ссылаться на разные кадры независимо друг от друга, что увеличит эффективность кодирования.
Адаптивное 8×8 дискретное косинусное преобразование (DCT). Разрешает умное: использование преобразований 8×8 в I-кадре. При отключении, автоматически отключится анализ частиц I8x8. Работает только в High Profile, т.е. если включить, то профиль поменяется на High Profile.
Рекомендуется включить для того, чтобы движение объектов искалось как для яркостного так и для цветоразностных сигналов. Отключение даст незначительную прибавку к скорости и незначительную потерю качества.
Простыми словами, использование прореживания блоков. Изображение разбивается на блоки, каждый из которых подвергается дискретно-косинусному преобразованию. Если полученный блок в P-кадре не сильно отличается от аналогичного блока в ключевом кадре, то такой блок отбрасывается, т.е. используется прореживание P-кадров. В большинстве случаев в отброшенных блоках находятся помехи и артефакты сжатия, но, в принципе, в них могут находится и мелкие детали. Сэкономленные на прореживании биты идут на улучшение остального видео в целом. Галочка с данной опции должна всегда стоять при кодировании мультипликации и в большинстве случаев при кодировании фотореалистичного видео, кроме случаев когда вы кодируете видео высокого качества с очень высоким битрейтом.
Рекомендации: Обязательно включить в режиме CRF, можно при 2-х проходном кодировании, за исключением тех случаев, когда необходима повышенная детализация.
Рекомендации: включить i4х4, p8х8, b8х8, остальные отключит для более быстрого кодирования.
Это максимальное количество последовательных B-кадров. B-кадры – это кадры в которых закодированы изменения не только от предыдущих кадров, но и от последующих (кадры двунаправленного предсказания). Имеют еще большую степень сжатия, чем P-кадры. Несмотря на низкое качество изображения в B-кадрах, их все же рекомендуется использовать, т.к. сэкономленные биты идут на улучшение качества остальных кадров. Значения 2 или 3, как правило, сочетают нормальное качество со значительным улучшением сжимаемости. В Baseline Profile использование B-кадров не предусмотрено.
Рекомендации: значения 2 или 3.
Рекомендации: Auto – в случае 2-проходного режима, Spatial при кодировании CRF. Если вы кодируете с использованием Baseline Profile, то работать не будет.
Рекомендации: выключить (если вы кодируете с использованием Baseline Profile, то работать не будет, даже если включите) или Optimal (дольше).
Рекомендации: включить normal если значение B-frames больше 1 (если вы кодируете с использованием Baseline Profile, то работать не будет, даже если включите).
Mb-tree rate control передаёт информацию от будущих блоков к прошлым с помощью векторов движения. Эта функция дает возможность воздействия на отдельные блоки вместо полных сцен. То есть, вместо того, чтобы понижать качество в сценах высокой сложности, эта функция понизит качество только на сложной части сцены, в то время, как например, статический фон останется высококачественным. Во многих случаях mb-tree rate control даёт положительные результаты. Применение этой функции полезно при всех значениях битрейта, особенно при низких, где видео могло бы полностью рассыпаться на блоки.
Рекомендации: не выключать (галочку не ставить)
Позволяет использовать B-кадры там, где присутствует плавный переход от одного оттенка цвета к другому. Другими словами, разрешает взвешенное предсказание яркости для B-кадров, которое улучшает затухания и градиенты цвета. Потери в скорости кодирования минимальны, поскольку не требуется производить дополнительные вычисления. Так же, не сильно влияет на требования декодера к CPU.
Рекомендации: включить (если вы кодируете с использованием Baseline Profile, то работать не будет, даже если включите).
Рекомендации: значение – 1 или 2.
Определяет наименьшее возможное значение квантователя. Чем меньше квантователь, тем лучше качество картинки (и хуже сжатие). Во многих кадрах картинка сжатая квантователями ниже 16 визуально воспринимается как сжатая без потерь. Учтите, что на ключевые кадры этот параметр тоже воздействует, а это значит, что сильно увеличив этот параметр, ключевой кадр будет выглядеть плохо, а на основе этого ключевого кадра могут быть построены еще около 250 P- и B-кадров.
Рекомендации: значения – 1:1
Psy-RDO – это сила RD-оптимизации (или RDO, Rate–distortion optimization). Позволяет экономно, с точки зрения битрейта, закодировать шумы видеоряда и значительно повысить детализацию изображения. Зернистость большинства видеоматериалов создаёт эффект большей детализации изображения, но после воздействия шумоподавляющих фильтров происходит замыливание изображения. Psy-RDO позволяет регулировать силу психовизуальной адаптации высокочастотных деталей изображения по следующему сценарию: вместо кодирования мелких деталей максимально приближенными к исходному материалу, Psy-RDO кодирует их максимально похожими на источник удобным с точки зрения битрейта способом, повышая, таким образом, детализацию изображения и несколько завышая показатели шума в PSNR. При этом мелкие детали не замыливаются, а заменяются похожими и выгодными кодеку структурами. Другими словами, Psy-RDO вылавливает из исходного видео шумовую компоненту (некоррелированный сигнал) и добавляет ее впоследствии в рип в тех местах, где его вероятность появления выше, наподобие управляемого информацией из рипа, функционального генератора шума. Этот метод требует дополнительного битрейта в меньших объёмах при значительном повышении детализации изображения. Увеличение параметра PSY-RDO повышает детализацию и зернистость изображения, уменьшение наоборот их снижает. Для функционирования необходимо, что бы Subpixel ME имел значение больше, либо был равен шести.
Рекомендации: значения 1:0
Рекомендации: значения 0:0 (автоматический режим) при кодировании в CRF и согласно таблице уровней совместимости в мультипроходном.
Быстрый пропуск определения P-кадров повышает скорость, но может вызвать небольшую блочность в местах, где непрерывная цветовая гамма или лёгкий градиент (тёмные сцены или небо).
Рекомендации: не включать в Bitrate режимах, в режиме CRF – желательно включить.
Актуально для многоядерных процессоров и многопроцессорных систем. Кодирование в несколько потоков значительно увеличивает скорость кодирования, при незначительном ухудшении качества (на столько незначительном, что невооруженным глазом разница станет заметной лишь при кодировании более чем в 30 потоков). Это ухудшение качества связано с тем, что при многопоточном кодировании кадр разбивается на слайсы, которые кодируются независимо и поэтому не могут иметь референсных связей. Количество потоков вычисляется по формуле: количество ядер умножить на 1.5, т.е. для 2-х ядерного процессора значение 3, для 4-х ядерного 6.
Кодирование звука: Выбор кодека для кодирования звука, пресета MP3 ABR 128k обычно вполне досточно, можно экспериментировать с разными пресетами или создать свой. Подробно описывать настройки звуковых кодеков не вижу смысла, ибо обычно достаточно уже встроенного пресета.
В конечном итоге видим примерно такое окошко:
Жмем кодировать, выбираем путь для сохранения и нам остается только ждать завершения кодирования.