Подбор оптимальных настроек x264

В данном кратком мануале, разберём настройки под форматы, фпс и тип контента.

На примере OBS. 

 

 

Пресет (ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow)

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

 

Профиль (profile=high) baseline, main, high

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

 

Уровень (level=4.2)  

Вторичный набор ограничений. Указывающий на формат и фпс.

3.1 - 720p30 / 3.2 - 720p60 / 4.1 - 1080p30 / 4.2 - 1080p60

 

В случае 900p  например см. уровень согласно 1080p. Но и не устанавливайте уровень больше, чем нужно ( например 4.х для 720p ), это приведет к неоправданно лишнему расходу ресурсов CPU. 

Не рекомендуется отдавать выбор уровня на волю кодека (особенно на пресетах выше medium)   

 

 

Далее, разберём доп. калибровку пресетов:

 

Помните, что калибровка основана на двух осях:

X - ось гладкости/зернистости 

Y - ось движения

 

На данном рисунке оси разделены на 4'ре участка, и обозначены 4мя цветами:

Где зелёный, самое простое для кодеков сжатие (стоячий-размытый). 

Желтые участки -  требующие незначительных отклонений в настройках. 

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

Белые участки - кодек настроен по умолчанию.

 

 

Доп. настройки к пресетам, для улучшения картинки и минимизации артефактов в виду низкого битрейта и/или слабого пресета.

 

0. Смешанный тип контента, подойдет для 90% стримов на постоянку. 

> aq-mode=2 psy-rd=1.2:0.5 aq-strength=1.2

 

1. Игра с высоким движением и отсутствием детализации. (напр. шутер/гонки с 'flash' графикой)

> aq-mode=2 psy-rd=0.5:0.0 

 

2. Игра с высоким движением и средней детализацией. (напр. шутер/гонки с 'мультяшной' графикой)

> aq-mode=2 psy-rd=1.0:0.5 aq-strength=1.2 deblock=1:1

 

3. Игра с высоким движением и очень высокой детализацией (напр. шутер в лесу или гонки)

> aq-mode=2 psy-rd=1.5:0.8 aq-strength=2.0 deblock=3:3 nr=300

 

4. Игра с высокой детализацией (напр. стратегии)

> aq-mode=2 psy-rd=1.2:0.8

 

5. Игра с минимумом движения и высокой детализацией (напр. визуальные новеллы)

> psy-rd=1.2:0.5 aq-strength=0.5 deblock=-3:-3

 

 

 

Далее, разберём их по порядку 

 

deblock - Включение фильтра подавления блочности. Полный диапазон от -6 до 6. По умолчанию 0:0, значения рекомендуется держать одинаковыми. Данный фильтр может помочь избавится от ступенчатых градиентов, например вокруг солнца. Его применение может помочь для 720p60(3mbps) и 1080p60(6mbps), Но в то-же время может сказаться губительно (заблюрить) если битрейта и других настроек сжатия для кодировки будет достаточно, чтобы сжать картинку с сохранением деталей. Используйте его с осторожностью.

 

aq-mode -  фильтр адаптивных квантов, значение по умолчанию 1 оперирует квантами в пределах 1'го кадра, значение 2 оперирует квантами в том числе с учетом соседних кадров. Значение 3, с приоритетом на тёмные участки видео (рекомендуется для тёмных стримов).  Данный фильтр (2 и 3) может минимизировать развал видео на квадраты при резком смене ракурсов или движении.  Рекомендуется 2 или 3 на всех битрейтах и пресетах. 

 

aq-strength - устанавливает силу вышесказанного фильтра, в диапазоне от 0.5 (большая детализация изображения, но и больше артефактов) до 2.0 (меньшая детализация, но значительное снижение вероятности появления артефактов). Устанавливайте его только в случае оочень активного видео-ряда, например гонки. (по умолчанию 1.0)

 

* В случае профиля main, настройка aq-mode особой ценности не принесёт, т.к. этот профиль не предусматривает манипуляции с матрицами квантования, которыми оперирует aq.

 

psy-rd - психивизуалиционная модель моделирования шумов и мелких деталей для лучшего сжатия с минимальными отклонениями в визуальной составляющей. Рекомендуется использовать на пресетах medium-veryslow. Приведённое значение оптимально для большинства стримов. В случаее если стрим игры в стиле "аниме" - установите значение psy-rd=0.5:0.0 или вовсе отключите его no-psy=1, если мелкая детализация отсутствует полностью (отсутствие движущихся деталей меньше 8х8 пикс)

* В случае пресетов medium и ниже, psy-rd не будет работать в полную силу.

 

nr (100-1000)- Предварительный фильтр, оценивает шумность видео-ряда, и основываясь на этом значении, пытается удалить шум с минимальными потерями деталей перед квантованием. Можно применять когда игра очень сильно изобилует москитным шумом. Дабы кодеку было проще и качественнее произвести сжатие на низких битрейтах. Так-же может быть полезен когда у игры отключено какое-либо сглаживание. 

 

 

Так-же обратите внимание на доп. флаг:

ref=3 - Параметр задает количество используемых рефернсных кадров. Значение 3 соответствует таковому по пресету medium. Может помочь сэкономить ресурсы CPU на пресетах slow-veryslow с минимальными потерями в качестве. Т.е. например лучше использовать veryslow и ref 3, чем slower при стандартных для него ref'ах. Не используйте его на пресетах medium и ниже.

 

Оптимизации (Tune) - film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency

В контексте игровых стримов опция лишняя и в большинстве своём скажется губительно.

 

 

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

Рассматривать их, не имеет смысла отягощать вас лишними параметрами.

 


 

p.s. см. так-же

* Второй компьютер без карты захвата https://goodgame.ru/topic/101878/

* Двухпроводное кодирование сегментами <GPUCPU 1+2pass> https://goodgame.ru/topic/102016/

* Передача 1080p60 на карту захвата 720p60 https://goodgame.ru/topic/102304/