Классический форум-трекер
canvas not supported
Нас вместе: 4 262 378


Устойчивый к блокировкам VPN с высоким уровнем приватности

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


 
 
RSS
Начать новую тему   Ответить на тему    Торрент-трекер NNM-Club -> Форум Видео -> Обработка Аудио & Видео
Автор Сообщение
Brenden ®
Стаж: 14 лет 3 мес.
Сообщений: 37
Ratio: 20.007
5.97%
I. Определение вторичных настроек:

1) --direct spatial - ставить всегда при кодировании по CRF, а при кодировании в 2 или 3 прохода --direct auto
2) --b-adapt 2 - даёт наилучшее соотношение качества на вес
3) --trellis 2 - даёт наилучшее соотношение качества на вес
4) --me tesa - максимально долгая, но и максимально эффективная схема для получения наилучшего качества на наименьший вес
5) --subme 11 - максимум качества, минимум артефактов кодирования
6) --partitions all - актуальная настройка для SD и HD, которая полностью отменяет всякую необходимость в жёстком указании --level 4.1
7) --no-mbtree - отменяет систему "дерева" - снижения качества на динамичных элементах и сценах в пользу статичных
8) --aq-mode 2 - даёт наименьшее кол-во артефактов в сравнении со стоящей по умолчанию --aq-mode 1
9) --no-dct-decimate - отменяет пропуск dct-блоков, что позволяет выжать больше качества
10) --merange 16 - в сравнении с 24 даёт меньше артефактов, больше скорость кодирования и чуть выше вес
11) --ratetol 100 - следует добавлять при кодировании в 2 или 3 прохода, при кодировании же по CRF на результат никак не влияет.
Остальное - оставить по умолчаниям x264 и не трогать.

II. Определение ключевых настроек:

1) --CRF - степень качества. Положительной стороной является способность в один проход выдерживать на всём видео определённую степень качества, которая не характеризуется определённым битрейтом. Т.е. сколько надо для выдержки заданного качества, столько битрейта и будет потрачено: хоть 10, хоть 30000. Благодаря этому можно в десятки раз быстрее и проще определить ту степень, которая даст оптимальное соотношение зрительно приемлемого качества на вес, чем искать её в 2 прохода по битрейту. Отрицательной стороной является то, что кодирование по битрейту в 2 прохода всё-таки даёт на выходе более лучшее качество, а вес меньше, но нет худа без добра: благодаря CRF можно определить тот битрейт, на который можно опираться для дальнейшего кодирования уже в 2 прохода по этому самому битрейту.
Для кодирования качественных и детализированных BD-исходников в подавляющем большинстве случаев достаточным бывает CRF 18-16 для 8бит и 17-15 для 10бит. Для низкокачественных или очень статичных (запись рабочего стола, например) исходников подойдёт значение из диапазона 22-18.

2) --deblock - этот параметр/фильтр служит для подавления возникающей при кодировании блочности, влияет на чёткость изображения и является решающим для определения таких параметров как --ref, --bframes и --psy-rd.
Какой выбрать? Искренне не рекомендую использовать значения выше 0:0 для BD-исходников, в остальном можно опираться на планируемое вами качество видео и этическими ограничениями на вес. На мой взгляд если исходник качественный и чёткий, то для CRF18 и 17 вполне подойдут значения 0:0, для 17-16 - -1:-1, для 16-15 - -2:-2. Для изначально низкодетализированного исходника плохого качества, прошедшего через фильтрацию от интерлейса и прочих артефактов присущих старым DVD, не имеет особого смысла пытаться пиксель в пиксель передать картинку и тут уже можно поднять и CRF и deblock.

3) --psy-rd - это систематизированный повторяющийся шум, служащий для исправления градиентов и имитации детализированности изображения, т.е. фактически это дизеринг.
В 8 бит выглядит не очень хорошо, а вот в 10бит уже куда более естественно и неприметно.
Степень сохраняемости этого дизеринга зависит от степени качества и ему тоже нужен битрейт. Т.е. нет смысла ставить высокие значения, если выбранного CRF для этого недостаточно, а уж с повышенным deblock и подавно. Например набор CRF=20 + deblock=1:1 + psy-rd=1.0:0.0 - это как минимум просто глупо.
Как писалось выше: оптимальное значение psy-rd в первую очередь зависит от deblock, а то как хорошо он будет сохранён - от CRF.
Так как же найти оптимальное значение? На глаз! Я это уже сделал за вас в таблице ниже, значения в которой если даже и не универсальны, то как минимум могут послужить вам точкой опоры для нахождения более, как вам покажется, правильных значений, дело ваше.
Как определить нужно ли использовать psy-rd или нет? При высоких CRF (низких битрейтах) для онлайн-версий и PSP точно не нужен. Однако бывают видео с очень высокой степенью шума и(или) зернистости, которые при кодировании сохраняется довольно хорошо и сами по себе служат дизерингом. Такое бывает в игровых видео по хоррорам и в старых фильмах 80-х годов и ранее. Эти случаи надо рассматривать в индивидуальном порядке и принимать решение по результату от кодирования "с" и "без" какого-нибудь отрезка или нарезки из видео (для этого достаточно 1-5 минут, а также крайне желательно наличие в этом отрезке очень ярких и очень тёмных сцен).

4)
a)--ref - настройка, чьё оптимальное значение зависит только от deblock и не зависит от разрешения, фпс или CRF.
К сожалению для "железных" плееров по стандарту 4.1 имеет ограничения. Для SD даже в 60fps их нет, для HD в 60fps не рекомендуется больше 9, а для FullHD 30fps не больше 4-х. Однако, практика показывает, что для HD, а также для FullHD и промежуточных разрешений 23.976 и 29.97fps можно и больше. Как проверить? Будет вполне достаточно не задавать жёстко level 4.1, а взять пару секунд видео и закодировать с --partitions all, после чего в медиаинфо посмотреть какой level определился для вашего видео и ref: если равно или меньше 4.1 - всё отлично, если 5.0 или больше - снижайте ref. Правильно подобранное по логу значение ref будет золотой серединой между артефактами и замыленностью картинки. И как вы уже начали догадываться я его тоже подобрал за вас для каждого deblock, но если хотите попробовать найти сами, то читайте ниже.
b) --bframes - настройка, чьё оптимальное значение как правило больше --ref и зависит напрямую от самого видео. Если не хотите заморачиваться на долгий и мучительный поиск оптимального значения bframes, то просто приравняйте его к ref.
Так как же найти оптимальные ref и bframes самостоятельно? Для этого нужно вести лог кодирования, в его конце есть информация о том с какими результатами завершилось кодирование. Выглядит это примерно так:
Код:
[info]: frame I:1     Avg QP:31.18  size: 10679x264
[info]: frame P:11    Avg QP:34.65  size:  4462x264
[info]: frame B:16    Avg QP:34.27  size:  2279x264
[info]: consecutive B-frames: 10.7% 14.3% 75.0%x264
[info]: mb I  I16..4:  5.2% 23.0% 71.7%x264
[info]: mb P  I16..4:  0.7%  2.3%  7.2%  P16..4: 10.0% 10.2% 10.0%  8.1%  0.8%    skip:50.6%x264
[info]: mb B  I16..4:  0.2%  0.4%  1.0%  B16..8: 15.8% 16.4%  7.0%  direct: 0.7%  skip:58.6%  L0:38.9% L1:50.7% BI:10.4%x264
[info]: 8x8 transform intra:22.8% inter:8.5%x264
[info]: direct mvs  spatial:81.3% temporal:18.8%x264
[info]: coded y,uvDC,uvAC intra: 36.8% 37.8% 16.5% inter: 12.2% 2.7% 0.6%x264
[info]: i16 v,h,dc,p: 36% 22% 41%  1%x264
[info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36%  7% 45%  2%  1%  2%  1%  2%  3%x264
[info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 10% 36%  3%  3%  4%  2%  4%  2%x264
[info]: i8c dc,h,v,p: 25% 35% 28% 12%x264
[info]: Weighted P-Frames: Y:9.1% UV:0.0%x264
[info]: ref P L0: 87.4%  2.2% 10.4%x264
[info]: ref B L0: 86.0% 14.0%x264
[info]: ref B L1: 93.6%  6.4%x264
[info]: kb/s:659.10
encoded 28 frames, 3.66 fps, 659.10 kb/s

done encoding video

а нас интересуют только эти строки
Код:
[info]: consecutive B-frames:
[info]: ref P L0:
[info]: ref B L0:
[info]: ref B L1:

"Consecutive B-frames" отвечает за bframes, а остальные за ref. Оптимальным ref будет тогда, когда одно из значений хотя бы в одной из строк ref P L0/ref B L0/ref B L1 станет равным 0.0 или 0.1. Аналогично с bframes: если одно значение стало равным 0.0 или 0.1, значит мы нашли оптимальное bframes. Начинать следует с малого, т.е. с ref и bframes равных 2 и 2 соответственно, а затем добавляем по единице к каждому до тех пор, пока не найдём оптимальное ref. После этого смотрим на строку "Consecutive B-frames": если есть одно значение равное 0.0 или 0.1 - то и bframes мы тоже нашли; если таких значений 2 и более - перепрыгнули и надо не меняя ref снижать bframes; если ни одного - значит недопрыгнули и теперь не меняя ref надо повышать bframes.
Внимание! Брать для поиска оптимального ref следует кусок видео не менее 1-й минуты, а для bframes чем больше - тем лучше. Быстрый способ: ищем значения по вырезке из видео продолжительностью ровно 1 минута, затем проверяем их правильность по вырезке из видео продолжительностью 5 минут, а затем и на всём видео.
Также бывают случаи, когда по логу оптимальных комбинаций может быть несколько, например ref=3 bframes=8, ref=4 bframes=8 и ref=5 bframes=8. В таких случаях наилучшей будет пара с наименьшим ref, т.е. ref=3 bframes=8. А бывают случаи когда найти по логу оптимальные значения невозможно.
При явном недостатке битрейта, например, при кодировании версий для онлайн-просмотра или для PSP лучше всего подойдут значения, найденные не по логу, а ref=2 bframes=2, т.к. они дадут меньше всего артефактов.

ТАБЛИЦА РЕКОМЕНДУЕМЫХ ЗНАЧЕНИЙ ОТНОСИТЕЛЬНО ВЫБРАННОГО ПАРАМЕТРА DEBLOCK

Пример настроек для 8бит, которые у вас могут получиться:
Код:
--crf 16.0 --direct spatial --deblock -1:-1 --ref 6 --bframes 8 --b-adapt 2 --trellis 2 --me tesa
--subme 11 --partitions all --no-mbtree --aq-mode 2 --no-dct-decimate --psy-rd 0.90:0.00


III. 2- и 3-проходное кодирование:

1) Теперь у нас есть все нужные нам настройки и закодированное видео по CRF, но душа просит закодировать ещё лучше и снизить вес? И тут на сцену выходит 2-проходное кодирование! Меняем --direct spatial на --direct auto, добавляем --ratetol 100, ставим 2 pass и берём тот битрейт, deblock, ref, bframes и psy-rd, которые у нас получились от кодирования по CRF. После кодирования на выходе получим качество ещё лучше, но если качество лучше вам не нужно, то можно смело снижать битрейт на глаз до тех пор пока визуально не получим такое же качество каким оно было при CRF. Подбирать можно по 5-минутной нарезке из разнообразных сцен, где одна версия будет закодирована по CRF, а вторая в 2 прохода будет с ней сравниваться .

Пример настроек для 8бит, которые у вас могут получиться:
Код:
--bitrate 4000 --direct auto --deblock -1:-1 --ref 6 --bframes 8 --b-adapt 2 --trellis 2 --me tesa
--subme 11 --partitions all --no-mbtree --aq-mode 2 --no-dct-decimate --psy-rd 0.90:0.00 --ratetol 100


2) А как же 3-проходное? 3-проходное значительно снижает пиковый битрейт, из-за чего мажет, но в тоже время сильно снижает вес, что в сочетании с deblock=0:0, no-psy, ref=2 и bframes=2 идеально подходит для кодирования онлайн-версий и версий для PSP.

Пример настроек для 8бит, которые у вас могут получиться:
Код:
--bitrate 500 --direct auto --deblock +0:+0 --ref 2 --bframes 2 --b-adapt 2 --trellis 2 --me tesa
--subme 11 --partitions all --no-mbtree --aq-mode 2 --no-dct-decimate --no-psy --ratetol 100
Показать сообщения:   
Начать новую тему   Ответить на тему    Торрент-трекер NNM-Club -> Форум Видео -> Обработка Аудио & Видео Часовой пояс: GMT + 3
Страница 1 из 1