Тут на днях задумался - а насколько там нынче хорош видео енкодер AV1 относительно H.264.
Сфера его применения сейчас растет, оно есть в Youtube, оно поддерживается в программах для стриминга, в сегодняшнем поколении видеокарт уже добавили его хардверную поддержку.
Не, так-то понято, что это очередное крутое поколение видео енкодеров, и ебучие шакалы AV1 по определению лучше чем в H.264 (x264).
картинка для привлечения внимания
Но в этом контексте всегда надо помнить, что нет универсального "всегда лучшее для всех",
как говорится, дано 3, ты можешь выбрать только 2
скорость - качество - объем
Когда появляются более крутые алгоритмы сжатия видео, то само собой разумеется что они требуют более тяжелых вычислений, а следовательно и работают медленнее.
И вот мне стало интересно, насколько AV1 может стать заменой H.264 в той области, когда у нас нет времени ждать. Надо вот прям щас срочно пережать видосик с адекватным качеством и объемом, или хочется записать видео с экрана или стрим без покупки второго компа который будет вывозить большую нагрузку.
К тому же в многими любимой программе для стриминга игр, OBS, уже имеется версии AV1 для CPU (хардверный вариант в видюхах рассматривать не буду, да и у меня и видюхи такой нет). Так неужели AV1 может затмить по скорости и качеству, да еще и с объемом не прогадать. Или нафик нам тогда вообще AV1 для цпу в OBS сдался.
Итак, берем в руки HandBrake, здесь будем шакалить видео с разными параметрами.
(было бы лучше взять ffmpeg и набыдлокодить скрипт который сам все делает, но у меня лапки)
Также надо чем-то измерять шакализацию, в качестве оценки попугаев возьмем VMAF, который обещает оценку в чем-то похожую на человеческий взгляд, а не просто разность пикселей посчитать. Такую штуку я нашел в Nmkoder
Взял кодеки AV1 (вариант реализации под названием SVT), H.264 (x264) и H.265 (x265) и прошелся с разными (но не особо медленными) настройками. Хотел было включить сюда и VP9, но он оказался слишком медленный даже на самой быстрой настройке, доступной в Handbrake.
В качестве первой и самой длинной проверки я взял один из видосиков с работы. Получились вот такие результаты
Пояснения к таблице
пресет av1 - настройка, больше = быстрее
пресет h264 - настройка, "медленнее" или "быстрее". (очевидно для знающих английский)
rf - настройка, качество с переменным битрейтом, меньше - лучше качество, но больше объем
VMAF - результат, больше = лучше (идеал = 100)
скорость - результат, множитель времени потраченного на сжатие относительно длительности видео
Общая мысль о выводах
- при кодировании на CPU (в области "сжать быстренько") енкодер AV1-SVT превосходит H.264 по всем трем пунктам - скорость-качество-размер. Т.е. здесь можно отказаться от H.264 и перейти на AV1 (SVT).
Разве что вам нужно ну вообще супер-скорость (или хотите записывать как вы играете даже на довольно слабом компе - тогда AV1 (SVT) может оказаться слишком медленным даже в самом быстром режиме, но из моего опыта x264+пресет=ultrafast можно использовать вместе с игрой даже на довольно слабых компах)
Также сделал коротенький тест на кусочке фильма где есть экшон ("v") и запись геймплея шутера ("р").
В целом, считаю что вводы подтверждаются.
P.S. Конечно, нельзя вот прям сейчас взять и отказаться от H.264, поддержка AV1 пока еще есть далеко не везде, и "переезд" будет длится еще довольно долго.
P.S.S. Я сначала было попытался найти такое в интернете, ведь наверняка кто-то подобное уже делал, но боги поисковых систем не были ко мне благосклонны.