LINUX.ORG.RU

Не получается задействовать аппаратное ускорение средствами видеокарты

 , ,


0

2

Нужно перекодировать много видеофайлов из avi в mkv или mp4 (h264 или h265). Пробовал программы vlc media player,handbrake,avidemux,ciano, выбирал vaapi,vdpau,libva / установлен ffmpeg, mesa-libva, но во всех программах грузятся все 16 потоков процессора и кодирование проходит медленно. Видеокарта 7800xt загружена на 0%. Читал что нужен проприетарный драйвер, можно ли как-то задействовать ресурсы видеокарты с открытым драйвером mesa?


Читал что нужен проприетарный драйвер, можно ли как-то задействовать ресурсы видеокарты с открытым драйвером mesa?

Не нужен проприетарный, на открытых кодирование работает. Но не все кодеки и форматы кадра доступны. Нужно будет разобраться с ffmpeg в целом и c hwupload в частности, примерно так:

ffmpeg -y \
    -i input.mkv \
    -c:V:0 hevc_vaapi \
    -vaapi_device /dev/dri/renderD128 \
    -vf 'hwupload' \
    -profile:v main \
    -rc_mode CQP \
    -global_quality 20 \
    -f hevc \
    output.hevc

После кодирования микшировать потоки надо mkvmerge’ем - ffmpeg как-то очень криво микширует mkv по дефолту.

anonymous
()

ну судя по описанию, аффтыру плевать на детали, поэтому нужно выбирать mp4 и h264. Остальное ненужное усложнение жизни.

anonymous
()
Ответ на: комментарий от einhander

openSUSE Tumbleweed

vainfo Trying display: wayland libva info: VA-API version 1.23.0 libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so libva info: Found init function __vaDriverInit_1_23 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.23 (libva 2.23.0) vainfo: Driver version: Mesa Gallium driver 25.3.4 for AMD Radeon RX 7800 XT (radeonsi, navi32, LLVM 21.1.8, DRM 3.64, 6.18.8-1-default) vainfo: Supported profile and entrypoints VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSlice VAProfileHEVCMain10 : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointEncSlice VAProfileJPEGBaseline : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD VAProfileAV1Profile0 : VAEntrypointVLD VAProfileAV1Profile0 : VAEntrypointEncSlice VAProfileAV1Profile2 : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc

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

А можете мне написать пример попроще, с небольшим количеством параметров, например ffmpeg -i input.avi output.mp4, только какой ключ писать для аппаратного конвертирования?

pckot
() автор топика

Ещё нужно проверить, устраивает ли вас качество видео, так как оно скорее всего будет хуже, чем при кодировании на CPU

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

Я уже весь интернет перечитал, ничего не понял; dxva2 это вообще походу для винды. d3d11… да там все примеры для винды. Вот в моём случае, ffmpeg -i input.avi output.mp4 в каком месте какой ключ ставить чтоб видюха заработала? Если просто ffmpeg -i input.avi output.mp4 то всё также на проце

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

До качества ещё дожить надо, мне б аппаратное ускорение задействовать

pckot
() автор топика

Покажите вывод команды:

ffmpeg -hide_banner -encoders | grep -E "vaapi|amf"

Должно быть что-то типа:

 V....D h264_vaapi           H.264/AVC (VAAPI) (codec h264)
 V....D hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)
 V....D mjpeg_vaapi          MJPEG (VAAPI) (codec mjpeg)
 V....D mpeg2_vaapi          MPEG-2 (VAAPI) (codec mpeg2video)
 V....D vp8_vaapi            VP8 (VAAPI) (codec vp8)
 V....D vp9_vaapi            VP9 (VAAPI) (codec vp9)
Obezyan
()
Ответ на: комментарий от pckot

Вот в моём случае, ffmpeg -i input.avi output.mp4 в каком месте какой ключ ставить чтоб видюха заработала?

ffmpeg -hide_banner -vaapi_device /dev/dri/renderD128 -i input.avi -vf 'format=nv12,hwupload' -c:v h264_vaapi -qp 23 -c:a aac -b:a 192k output.mp4
Obezyan
()
Последнее исправление: Obezyan (всего исправлений: 1)
Ответ на: комментарий от pckot

А попробуйте:

ffmpeg -vaapi_device /dev/dri/renderD128 \
  -i input.avi \
  -vf 'format=nv12,hwupload' \
  -c:v h264_vaapi -qp 23 \
  -an \
  -f null -

И покажите вывод. Если там будет h264_vaapi то значит VAAPI используется и нужно смотреть что там карта реально делает через cat /sys/kernel/debug/dri/0/amdgpu_pm_info.

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

Благодарю Вас, пошло г…. по трубам,заработало. Теперь можно разбираться. Вот не понятно почему уже готовые софтины так не могут

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

Вот не понятно почему уже готовые софтины так не могут

Так сложилось исторически.

Obezyan
()
Ответ на: комментарий от pckot

Этот тоже только на проце кодит

Appimage? У нас (cinelerra-gg) там тоже vaapi/vdpau не работает на системах отличных от той, на которой билдился appimage. Но аппимэйдж можно распаковать, и удалить оттуда встроенную libva/vdpau. И тогда оно должно с системной слинковаться и заработать.

anonymous
()
Ответ на: комментарий от LongLiveUbuntu

Выше есть, ffmpeg из командной строки норм работает, скрипт написал, так целыми папками кодирует, а какую-нибудь прогу просто принципиально хочется заставить работать, и ещё чтобы там всякие параметры и фильтры пробовать менять, качество регулировать

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

Понимаю, вот хочу handbrake руками поставить (не flatpak), так РКН опять с утра чудит, репы не обновляются, кстати, какой порекомендуете из российских дистрибутивов?

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

Handbrake поставленный вручную не даёт положительного результата,- выбираю preset AMD VCN и всё равно пашет на проце, хотя в винде этот пресет грузит видюху

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

Handbrake поставленный вручную

В смысле скомпилированный? Или просто бинарник из Аппимэйджа?

Если скомпилированный, то там нужно внимательно в лог смотреть, что подхватилось. libva-devel или что-то подобное должно стояить.

https://download.cinelerra-gg.org/download.php?file=testing%2Fvulkan_onevpl-x86_64.AppImage

У нас тоже что-то каменный цветок не выходит, по крайней мере на Интеле с его OpenVPL.

Собрано с glibc 2.41, так что запустится только на новье.

Andrew-R ★★★★★
()

Попробуй изменить настройки кодеков в самой программе, там есть разные - некоторые не поддерживают твой драйвер видеокарты и все обрабатывается на процессоре, один или несколько могут поддерживать и тогда будут передавать на неё процессы. Проприетарный - тебе имели в виду проги для винды походу, но не все, а которые просят через 10 дней проплатить пакет. Но они то же так могут встрять, у меня было такое, что прога кодирует, но размер файла становится не меньше, а наоборот больше, при том что качество ухудшалось, т.е. толку было меньше 0. В этом плане проще купить другую видеокамеру, что бы сразу было в нужном виде.

repchick
()
12 апреля 2026 г.
Ответ на: комментарий от anonymous

Это вообще заморочка с тем что OpenSuse кодеки нормальные не поставляют из коробки и нао их скачивать из репозитория Packman. Можно по руководству или зайти в Yast в настройках системы и выбрать Репозитории программного обеспечения и добавить

packman

https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/

Оттуда ставится ffmpeg-7 или ffmpeg-8. В консоли необязательно работать. Для перекодирования может сгодиться Handbrake. Там есть варианты с аппаратными кодеками которые установлены через пункт Предустановка. У меня там видит QSV для интеловской встройки в пункте Hardware.

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

blds/bld_prepare.sh планируется опция для termux чтобы зависимости на автомате устанавливать?

Честно говоря я уже подзабыл что ставил именно в термукс поначалу, для компиляции cingg… А второго аппарата у меня нет. Так что увы, только если кто список пришлёт.

Andrew-R ★★★★★
()
Ответ на: комментарий от anonymous
boost-static/stable,now 1:1.90.0-1 aarch64 [installed]
freetype-static/stable,now 2.14.3 aarch64 [installed]
gpac-static/stable,now 2.4.0-5 aarch64 [installed]
gtk2-static/x11,now 2.24.33-8 aarch64 [installed]
liba52-static/stable,now 0.8.0-3 aarch64 [installed]
libandroid-shmem-static/stable,now 0.7 aarch64 [installed]
libmp3lame-static/stable,now 3.100-7 aarch64 [installed]
libmpeg2-static/stable,now 0.5.1-2 aarch64 [installed]
libopencore-amr-static/stable,now 0.1.6-1 aarch64 [installed]
libpng-static/stable,now 1.6.57 aarch64 [installed]
libsndfile-static/stable,now 1.2.2-2 aarch64 [installed]
libtheora-static/stable,now 1.2.0-1 aarch64 [installed]
libtiff-static/stable,now 4.7.1 aarch64 [installed]
libtwolame-static/stable,now 0.4.0-1 aarch64 [installed]
libusb-static/stable,now 1.0.29-1 aarch64 [installed]
libvo-amrwbenc-static/stable,now 0.1.3-2 aarch64 [installed]
libwavpack-static/stable,now 5.9.0 aarch64 [installed]
libxdg-basedir-static/stable,now 1.2.3-2 aarch64 [installed]
libxinerama-static/x11,now 1.1.6 aarch64 [installed]
libxpm-static/x11,now 3.5.18 aarch64 [installed]
libzimg-static/stable,now 3.0.6 aarch64 [installed]
littlecms-static/stable,now 2.18 aarch64 [installed]
sdl2-gfx-static/x11,now 1.0.4-4 aarch64 [installed]
sdl2-image-static/x11,now 2.8.8-4 aarch64 [installed]
sdl2-mixer-static/x11,now 2.8.1-2 aarch64 [installed]
sdl2-net-static/x11,now 2.2.0-2 aarch64 [installed]
sdl2-static/x11,now 2.32.10 aarch64 [installed]
zlib-static/stable,now 1.3.2 aarch64 [installed]

вот у меня такой список -static, но там еще makeinfo, clang и прочее надо ставить.

я обычно какой-нибудь wm тащу, он за собой тащит Хы, и потом gtk2-devel/static ну и далее по мере необходимости.

Andrew-R ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария