LINUX.ORG.RU

Какой программой сжимать VP9 и AV1 на GPU?

 , ,


0

2

Сабж. Какие программы умеют хорошо сжимать видео на современных видеокартах в форматы AV1 и VP9?

В качестве ориентира скажу, что Avidemux при кодировании x264 с дефолтными настройками на Nvidia GeForce GT 710 всё неприемлемо размазывает.

★★★★★
Ответ на: комментарий от question4

Да ничего не мешает. Я же не знаю твоих целей. Я про то что этот hardware offload оптимизирован не под качество картинки, а под стабильно выдаваемый FPS. Так что «неприемлемое размазывание» на старенькой карте ожидаемо.

Jameson ★★★★★
()
Ответ на: комментарий от Jameson

Я про то что этот hardware offload оптимизирован не под качество картинки, а под стабильно выдаваемый FPS.

Понятно.

Так что «неприемлемое размазывание» на старенькой карте ожидаемо.

Avidemux вроде как не предназначен для стриминга, поэтому ожидал от него чего-то получше.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Avidemux вроде как не предназначен для стриминга, поэтому ожидал от него чего-то получше.

А как он может влиять на кодирование? Кидает кадры на карту посредством libav или чего-то там, получает поток, точно так же, как и OBS. Кодировщик для обеих программ - чёрный ящик с некоторыми крутилками.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от question4

Avidemux вроде как не предназначен для стриминга, поэтому ожидал от него чего-то получше.

Абсолютно неважно предназначен «кормящий» видеокарту софт для стримминга, или нет. Ты не можешь у DSP профили настраивать, они железно захардкожены. Максимум можно переключаться между ними, если их несколько, под разные выходные параметры потока. В том и суть, жертвуем универсальностью в пользу стабильной производительности.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Сюрстримминг - шведский мукбанг!

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

Jameson ★★★★★
()
Ответ на: комментарий от question4

Держи пример аппаратного кодирования ffmpeg на радеоне и интеле в h264. Меняй на av1, или как он там будет, если железо поддерживает.

ffmpeg -threads 8 -hwaccel vaapi  -vaapi_device /dev/dri/renderD128 -i 2.mp4  -c:v h264_vaapi -vf format=nv12,hwupload -vcodec h264_vaapi  -preset fast -c:a copy -bf 0 -profile:v 66 out.mp4
einhander ★★★★★
()
20 декабря 2025 г.

Возвращаясь к теме:

Список доступных ffmpeg кодеков можно вывести командой ffmpeg -encoders.

Список параметров для кодека выводится по ffmpeg -h encoder=av1_nvenc, ffmpeg -h encoder=h265_vulkan, ffmpeg -h encoder=vp9_vaapi и т.п.

Для теста перекодировал 33-секундную заставку Диснея в 1146x480 (отрезанную, если не ошибаюсь, от скачанного с Ютуба короткого мультфильма). Видео AV01, звук AAC. Исходный объём 3,8М, плюс звук 1,2М. VP90+OGG пережали его без заметных отличий в 0,9М, плюс звук 1,4М.

Nvidia, 5090:

Наилучшее сжатие без видимого ухудшения для h264_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v h264_nvenc -multipass 2 -preset p7 -rc constqp outfile.mp4 — до 2,1М, звук 0,5М.
Без -rc constqp получается от 8,2M. -multipass 2 и -preset p7 дают небольшой выигрыш ~1%. Можно уменьшить видео ещё сильнее параметром -qp 27 (и выше), но уже для -qp 30 (1,3М видео) легко заметны искажения при быстрых движениях. Для максимального -qp 51 (всего 177k видео) видео разваливается на 76x30 пикселов, кроме совсем статичных кадров.
Изменение прочих параметров только увеличивает размер, поэтому оставил дефолтные.
Видео 1146x480 сжималось с 30-кратной скоростью, 1920x816 — с 13-кратной.

Наилучшее сжатие без видимого ухудшения для av1_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v av1_nvenc -rc constqp outfile.mp4 — 1,0М, звук 0,5М
Многие комбинации параметров недоступны.
-qp 125 и выше позволяют ещё снизить размер, но всё быстро тонет в артефактах.
Различные -preset дают выигрыш до 2к или проигрыш до 3к, причём лучшие p2 и p5, а худшие p7 и slow.
-multipass дают проигрыш до 6к.
Без замедляющих пресетов и повторных проходов видео 1146x480 сжималось с 45-кратной скоростью, 1920x816 — с 30-кратной.

Наилучшее сжатие без видимого ухудшения для hevc_nvenc получилось с параметрами:
ffmpeg -i infile.mp4 -c:v hevc_nvenc -rc constqp outfile.mp4 — 1,6М, звук 0,5М
Пресеты slow, hq, p6 и p7 дают выигрыш 0,5к, 2к, 3к и 2к, остальные увеличивают.
Тоже можно брать -qp 27 и выше, снижая размер. -qp 30 почти догоняет AV1 выше — видео 1М, качество ненамного хуже.
1146x480 сжималось с 50-60-кратной скоростью.

Похоже, Nvidia долго вылизывала HEVC, но в итоге оказалось, что AV1 сжимает лучше :)

На Radeon и Vulkan постоянно сыпятся ошибки наподобие «CreateComponent(AMFVideoEncoderHW_AV1) failed with error 11» «Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.» Опробую их в следующий раз как-нибудь.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от AbbaT

«Мыло» вызывают твои настройки качества видео.

Это были дефолтные настройки кодера в Avidemux. Просто привёл пример того, что меня не устраивает.

question4 ★★★★★
() автор топика
Ответ на: комментарий от token_polyak

Увы может. Avidemux собирается только со своим собственным патченным кривым ffmpeg непонятной версии. Соотвестсвенно хрен его знает зашита там поддержка хардвера или выпилена и что они там напатчили. Поэтому если хотите что-то длать быстро на коленке - то одна история, но если морочитесь настройками - то avidemux-у в этом процессе не место. Очень специфическая и кривая софтина. Правда очень удобная по интерфейсу для простых нужд.

Qui-Gon ★★★★★
()
Ответ на: комментарий от Qui-Gon

Avidemux собирается только со своим собственным патченным кривым ffmpeg непонятной версии. Соотвестсвенно хрен его знает зашита там поддержка хардвера или выпилена и что они там напатчили.

Хотел поспорить, т.к. много лет постоянно сталкивался с конфликтами версий Avidemux с общесистемным ffmpeg. Проверил. Да, в настоящий момент в зависимостях Avidemux в Gentoo ffmpeg отсутствует. И в этом году апдейтился без проблем.

У меня он сейчас зависит от общесистемных nv-codec-headers, libva, libvdpau и кучи библиотек для разных кодеков.

если хотите что-то длать быстро на коленке - то одна история, но если морочитесь настройками - то avidemux-у в этом процессе не место. Очень специфическая и кривая софтина. Правда очень удобная по интерфейсу для простых нужд.

Мануал отсутствует, документация на сайте неинформативна. Нужные параметры смог подобрать, перебирая опции ffmpeg в командной строке.

Но для обрезки и склеивания видео, вырезания звуковой дорожки, кадрирования — позволяет получить результат быстро и не разбираясь.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

там последняя версия от 22-го года. Вроде как копошение в гитхабе идет но такое ощущение что изначальные авторы кое-как осилив релиз просто забросили разработку, и теперь это еще более кое-как тянет коммьюнити. В вейланде оно не работает, с qt6 у меня после долгого геморроя собралось но собранное это на 6-м qt так не разу и не заводилось а просто сразу дампило в сегфолт.

Qui-Gon ★★★★★
()
Ответ на: комментарий от Qui-Gon

с qt6 у меня после долгого геморроя собралось но собранное это на 6-м qt так не разу и не заводилось а просто сразу дампило в сегфолт.

У меня нормально работает с Qt 6.9.3.

P.S. avidemux с патчсетом от 2025.10.19.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)