[Beta Support]: QSV failing on Battlemage (Intel Arc Pro B50) in Frigate 0.18.0 while VAAPI works #22866
Closed
sergeantc03
started this conversation in
Beta Support
Replies: 1 comment 3 replies
|
Not all Battlemage GPUs are the same, the B50 I believe requires newer drivers than B580 and Battlemage integrated GPUs. Your findings regarding ffmpeg are not correct, Jellyfin ffmpeg is not statically built while Frigate's default ffmpeg (BtBn) is. These are not really directly comparable. The reason Jellyfin ffmpeg works is because it includes its own copy of the drivers in its installation, overwriting those included in the Frigate image itself. |
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Describe the problem you are having
I cloned the Frigate dev branch, built the Dockerfile locally, and ran the resulting frigate-dev image on my UNRAID machine. I expected Intel QSV to work with my Intel Arc Pro B50 (Battlemage), but QSV fails while VAAPI works successfully on the same system and same /dev/dri/renderD128 device.
To isolate the issue, I ran direct FFmpeg and vainfo tests inside the frigate-dev container. Results were:
This does not appear to be a host driver issue, because I also have a separate working Frigate container on the same host and GPU where QSV works successfully. That suggests the issue is specific to the Frigate beta/dev container or its bundled FFmpeg/QSV runtime path rather than the UNRAID host or Battlemage support in general.
To add, I tested the same container with jellyfin-ffmpeg and installed the additional dependencies it needed. QSV test succeeded with jellyfin-ffmpeg. The output is added in additional-info.
Beta Version
0.18.0
Issue Category
Hardware Acceleration
Frigate config file
Relevant Frigate log output
Relevant go2rtc log output (if applicable)
No response
Install method
Docker Compose
docker-compose file or Docker CLI command
Operating system
UNRAID
CPU / GPU / Hardware
AMD Ryzen 7 5700G, Intel Arc Pro B50
Screenshots
No response
Steps to reproduce
Any other information that may be helpful
FFmpeg version:
ffmpeg version n7.1.3-43-g5a1f107b4c-20260319
built with gcc 15.2.0 (crosstool-NG 1.28.0.23_185f348)
QSV test command:
docker exec -it frigate-dev /usr/lib/ffmpeg/7.0/bin/ffmpeg -hide_banner -hwaccel qsv -qsv_device /dev/dri/renderD128 -f lavfi -i testsrc2=size=128x128:rate=1 -frames:v 1 -f null -
QSV output:
libva info: VA-API version 1.22.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
[AVHWDeviceContext @ 0x56525d2a1600] Error setting child device handle: -17
Device creation failed: -1313558101.
Failed to set value '/dev/dri/renderD128' for option 'qsv_device': Unknown error occurred
Error parsing global options: Unknown error occurred
VAAPI test command:
docker exec -it frigate-dev /usr/lib/ffmpeg/7.0/bin/ffmpeg -hide_banner -init_hw_device vaapi=va:/dev/dri/renderD128 -hwaccel vaapi -hwaccel_device va -f lavfi -i testsrc2=size=128x128:rate=1 -frames:v 1 -f null -
VAAPI result:
Successful. Frame completed and exited cleanly.
vainfo command:
docker exec -it frigate-dev vainfo --display drm --device /dev/dri/renderD128
vainfo result:
Successful. Intel iHD driver loads and reports codec/profile support normally.
I narrowed this down to the FFmpeg/runtime path bundled with frigate-dev.
First, I tested the extracted Jellyfin FFmpeg package as a custom FFmpeg under /config/custom-ffmpeg. The binary would not run initially because the stock frigate-dev container was missing several shared libraries required by the Jellyfin FFmpeg build.
I verified that with ldd against the custom FFmpeg binary. Missing libraries included:
After installing those missing runtime dependencies inside the frigate-dev container, the custom Jellyfin FFmpeg binary ran successfully.
At that point:
-versionworked/dev/dri/renderD128This strongly suggests the issue is not the host, GPU, or Battlemage support in general. It appears specific to the FFmpeg/runtime environment bundled with frigate-dev. Replacing that FFmpeg stack changes the result.
LDD showing missing libs before installing dependencies:
=== LDD === libopenmpt.so.0 => not found libbluray.so.2 => not found libvpx.so.7 => not found libwebpmux.so.3 => not found libwebp.so.7 => not found libzvbi.so.0 => not found libmp3lame.so.0 => not found libopus.so.0 => not found libtheoraenc.so.1 => not found libtheoradec.so.1 => not found libvorbis.so.0 => not found libvorbisenc.so.2 => not found libx264.so.164 => not found libx265.so.199 => not foundPackages installed to satisfy the custom Jellyfin FFmpeg runtime:
apt-get install -y \ libopenmpt0 \ libbluray2 \ libvpx7 \ libwebpmux3 \ libwebp7 \ libzvbi0 \ libmp3lame0 \ libopus0 \ libtheora0 \ libvorbis0a \ libvorbisenc2 \ libx264-164 \ libx265-199Custom Jellyfin FFmpeg version succeeding afterward:
ffmpeg version 7.1.3-Jellyfin Copyright (c) 2000-2025 the FFmpeg developers built with gcc 12 (Debian 12.2.0-14+deb12u1) configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvencCustom Jellyfin FFmpeg QSV test succeeding:
libva info: VA-API version 1.23.0 libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_22 libva info: va_openDriver() returns 0 libva info: VA-API version 1.23.0 libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_22 libva info: va_openDriver() returns 0 libva info: VA-API version 1.23.0 libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_22 libva info: va_openDriver() returns 0 [vist#0:0/wrapped_avframe @ 0x55e3c619fb80] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv". Input #0, lavfi, from 'testsrc2=size=128x128:rate=1': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: wrapped_avframe, yuv420p, 128x128 [SAR 1:1 DAR 1:1], 1 fps, 1 tbr, 1 tbn Stream mapping: Stream #0:0 -> #0:0 (wrapped_avframe (native) -> wrapped_avframe (native)) Press [q] to stop, [?] for help Output #0, null, to 'pipe:': Metadata: encoder : Lavf61.7.100 Stream #0:0: Video: wrapped_avframe, yuv420p(progressive), 128x128 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 1 fps, 1 tbn Metadata: encoder : Lavc61.19.101 wrapped_avframe [out#0/null @ 0x55e3c61a0800] video:0KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown frame= 1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:01.00 bitrate=N/A speed= 195xCustom Jellyfin FFmpeg VAAPI test succeeding:
Input #0, lavfi, from 'testsrc2=size=128x128:rate=1': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: wrapped_avframe, yuv420p, 128x128 [SAR 1:1 DAR 1:1], 1 fps, 1 tbr, 1 tbn Stream mapping: Stream #0:0 -> #0:0 (wrapped_avframe (native) -> wrapped_avframe (native)) Press [q] to stop, [?] for help Output #0, null, to 'pipe:': Metadata: encoder : Lavf61.7.100 Stream #0:0: Video: wrapped_avframe, yuv420p(progressive), 128x128 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 1 fps, 1 tbn Metadata: encoder : Lavc61.19.101 wrapped_avframe [out#0/null @ 0x5571f6d9ad00] video:0KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown frame= 1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:01.00 bitrate=N/A speed= 469xAll reactions