Войти
  1. ВКонтакте
  2. Facebook
  1. »
  2. »
  3. »
  4. Оптимальный битрейт для рипа x264
Новые публикации Скрыть панель справаПоказать панель справа

Оптимальный битрейт для рипа x264

2016-02-05T03:56:56+03:00 2016-02-05T03:56:56+03:00
Опытный
  1. Офлайн
  2. Владелец
  3. 527 сообщений
  4. Репутация: 89
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 1 отправлено 03:56, 05.02.2016
Чтение лога кодека и оптимизация битрейта

В связи с тем, что многие при выборе битрейта ошибочно полагаются лишь на показатель b-p/f , который иногда помогает, а иногда оказывается совершенно бесполезной цифрой, привожу более правильную методику подсчёта целевого битрейта. Каждый видеоряд обладает разной сжимаемостью, для некоторых 0.1 пресловутого b-p/f достаточно, чтобы прозрачно без артефактов закодироваться в компактный размер. Бывают же сложные видеопоследовательности, которые не помещаются и в .25 b-p/f . Намётанный глаз сразу распознает приблизительную сложность видеоряда для кодека, но более-менее достоверно оценить сжимаемость можно нижеописанным способом (занимает не более 5-10 минут с учётом времени на енкод, если только не использован тормозной скрипт). Имеет смысл при подготовке основательного рипа с упором на размер-качество.

Задача: Сжать распределённую выборку из целевой видеопоследовательности с заданным коэффициентом качества и оценить полученный результат.

Шаг 1. Сделать распределённую выборку из сорса
 Достаточно добавить в конец .avs скрипта три волшебные строки и на выходе получим ряд продолжительностью ~2550 фреймов, составленный из равномерно выдернутых из видеоряда кусков по 50 фреймов. Обычно этого достаточно, чтобы оценить сжимаемость более-менее равномерного видео длительностью до 1.5-2 часов.
Три строки:
Цитата:selectTotal1=framecount()/100
 selectTotal2=selectTotal1*2
 selectrangeevery(selectTotal2,50)

Во многих версиях XviD4PSP во вкладке AviSynth можно нажать Применить тест-скрипт и программа сама сделает выборку фреймов.

Шаг 2. Сжать подготовленную последовательность с настройками, с которыми планируете сжимать последний проход, но указать не битрейт и не --pass ?, а например --crf 18 (важно, что указываем не -q, а именно --crf). Выставляем b-фреймы и ref-фреймы 16.
Ждём завершения... и смотрим лог.

Шаг 3. Читаем лог

Использование b-фреймов
- процент задействованных b-фреймов, по порядку от 0 до 16. Если начиная с какой-то позиции стоят лишь 0.0 или 0.1-0.3, то использование --bframes больше этой цифры по сути бессмысленно и в большинстве случаев только увеличит время, необходимое для енкода. Подсчитываем количество задействованных b-фреймов (эту цифру мы выставим при кодировании)
Использование частиц
- I : i16x16,i8x8,i4x4 / PI: p16x16,p8x8,p4x4 / PP: p16x16,p8x8,p8x4,p4x8,p4x4 / BI: b16x16,b8x8,b4x4 / BB: b16x16,b16x8,b8x8
Если из лога видно, что какие-либо частицы не задействованы или задействованы по минимуму, то можно не включать их анализ в ключ --partitions p8x8,p4x4,b8x8,i8x8,i4x4. Как правило желательно оставлять анализ всех частиц для SD контента и выключать только p4x4 для HD сигнала.

analyse=0x3:0x133 means --8x8dct --partitions all
analyse=0x3:0x113 means --8x8dct and default partitions (--partitions i4x4,i8x8,p8x8,b8x8).

Распределение DCT трансформации 8x8
- Показывает насколько задействована 8x8 DCT трансформация, если проценты очень низкие, то ключ --8x8dct можно опустить в пользу скорости. Случай очень редкий, обычно стоит оставить параметр задействованным, если только не стоит задача сделать енкод максимально быстро. Без этого ключа автоматичнески отключится анализ частиц i8x8
Распределение выбора режима анализа векторов движения
- Показывает процент выбора кодеком между режимами локального и темпорального анализа векторов. Для мультипроходного режима стоит оставлять --direct auto, если только енкод не нужно сделать максимально быстро или кодируется чрезстрочный сигнал. Смысл использования --direct auto в однопроходном режиме теряется, обычно для однопрохода можно смело оставлять --direct spatial
Использование ref фреймов
- От 1 до 16 показывает насколько задействованы ссылочные кадры. Если после определённой цифры начинаются 0.0-0.3%, то смысл использовать --ref выше данного числа теряется, только увеличит время енкода. Аналогично как и для --bframes.
Средние кванты
Имеем три цифры квантов: для I фреймов, для P фреймов и для B фреймов. Чем динамичнее видеоряд, тем больше будет между ними разница и тем выше будут кванты для B фреймов. Если все три цифры не превышают 18, то полученного битрейта будет много и его смело можно резать процентов на 25 минимум. Если все три цифры превышают 22-23, то битрейта не хватает и его надо поднимать, если только целью не является минимальный размер рипа с допустимыми артефактами компресии. Для очень динамичного видео средний квант ~25 для b-фреймов вполне допустим. Обычно стоит следить, чтобы он не поднимался выше.

В логе, полученном с --crf 18, кванты как правило будут находится в промежутке 16..23. Полученный в результате битрейт и будет предпочтительным для сохранения максимально прозрачного качества. Если его делать выше, то это будет как праивло раздутием размера, опускаться ниже можно, но желательно не более чем на ~35-40%. При этом надо помнить, что поднимая/опуская битрейт на каждые 12.5% мы поднимаем/опускаем CRF на 1 целый пункт и в то же время, поднимая/опуская CRF на 6 пунктов мы увеличиваем/уменьшаем битрейт вдвое. Зависимость простая.

Пример:
avis [info]: 1040x432 @ 23.98 fps (2550 frames)
 x264 [info]: using SAR=1/1
 x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4 Cache64

Средние кванты:
 x264 [info]: slice I:48 Avg QP:15.14 size: 39314 PSNR Mean Y:46.18 U:51.02
 V:51.80 Avg:47.18 Global:46.75
 x264 [info]: slice P:922 Avg QP:17.23 size: 17666 PSNR Mean Y:43.98 U:49.35
 V:49.94 Avg:45.08 Global:44.61
 x264 [info]: slice B:1580 Avg QP:19.28 size: 6580 PSNR Mean Y:43.28 U:50.05
 V:50.60 Avg:44.46 Global:43.88

Использование b-фреймов:
x264 [info]: consecutive B-frames: 4.6% 17.9% 56.2% 10.9% 4.2% 3.4% 2.8% 0
 .0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0%

Использование частиц:
x264 [info]: mb I I16..4: 3.2% 89.3% 7.5%
 x264 [info]: mb P I16..4: 0.6% 12.4% 0.9% P16..4: 45.9% 23.0% 12.1% 0.2% 0
 .0% skip: 5.0%
 x264 [info]: mb B I16..4: 0.0% 1.4% 0.2% B16..8: 57.4% 1.8% 2.3% direct:

 5.7% skip:31.2% L0:40.8% L1:55.4% BI: 3.8%

Распределение DCT трансформации 8x8:
x264 [info]: 8x8 transform intra:89.3% inter:71.6%

Распередление выбора режима анализа векторов движения:
x264 [info]: direct mvs spatial:99.9% temporal:0.1%

Использование ref фреймов:
x264 [info]: ref P L0 53.2% 18.4% 9.5% 5.0% 3.8% 3.3% 2.6% 1.5% 1.3% 1.
 2% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0%
 x264 [info]: ref B L0 64.2% 15.9% 7.0% 3.9% 2.8% 2.4% 1.9% 1.3% 0.7% 0.
 0% 0.0% 0.0% 0.0% 0.0% 0.0%
 x264 [info]: ref B L1 89.9% 10.1%


 x264 [info]: SSIM Mean Y:0.9707640
 x264 [info]: PSNR Mean Y:43.586 U:49.814 V:50.380 Avg:44.734 Global:44.173 kb/s:
 2149.16

Полученный битрейт:
encoded 2550 frames, 4.48 fps, 2149.34 kb/s

Последний раз редактировал Enigma 22:32, 23.06.2019
 
Перейти
Найти

Доступ закрыт.

  1. Вам запрещено отвечать в темах данного форума.

Изменения статуса

  1. профиль RIP: AVI - 745 MB 21:08, 26.03.2018
  2. профиль Плохо переношу острое и тяжелую мебель. 14:07, 08.08.2016
  3. профиль Чэшырскі кот 18:58, 17.02.2016
  4. профиль Каррамба.... 03:12, 15.02.2016
  5. профиль Добрая пчёлка 06:45, 05.02.2016