Jellyfin Forum
Fix Hardware Acceleration using QSV not working. - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: Fix Hardware Acceleration using QSV not working. (/t-fix-hardware-acceleration-using-qsv-not-working)

Pages: 1 2 3


Fix Hardware Acceleration using QSV not working. - jimmythejuicer24 - 2023-12-05

As the title reads, I'm trying to get hardware acceleration to work using QSV.

Specs:
- Ubuntu 22.04.3 LTS
- Intel i5-6400
- Jellyfin Version 10.8.13 (through docker)

FFmpeg logs:
ffmpeg version 5.1.2-Jellyfin Copyright © 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec    59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter    8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample  4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
[AVHWDeviceContext @ 0x55b300a79f00] No VA display found for any default device.
Device creation failed: -22.
Failed to set value 'vaapi=va:,driver=iHD,kernel_driver=i915' for option 'init_hw_device': Invalid argument
Error parsing global options: Invalid argument

Checking QSV support:
sudo /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
Trying display: drm
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.20 (libva 2.20.0)
vainfo: Driver version: Intel iHD driver for Intel® Gen Graphics - 23.4.0 (05e4d0d)
vainfo: Supported profile and entrypoints
      VAProfileNone                  : VAEntrypointVideoProc
      VAProfileNone                  : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264Main              : VAEntrypointVLD
      VAProfileH264Main              : VAEntrypointEncSlice
      VAProfileH264Main              : VAEntrypointFEI
      VAProfileH264Main              : VAEntrypointEncSliceLP
      VAProfileH264High              : VAEntrypointVLD
      VAProfileH264High              : VAEntrypointEncSlice
      VAProfileH264High              : VAEntrypointFEI
      VAProfileH264High              : VAEntrypointEncSliceLP
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileJPEGBaseline          : VAEntrypointVLD
      VAProfileJPEGBaseline          : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointFEI
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointEncSlice
      VAProfileHEVCMain              : VAEntrypointVLD
      VAProfileHEVCMain              : VAEntrypointEncSlice
      VAProfileHEVCMain              : VAEntrypointFEI


Checking OpenCL Runtime:
sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=vaConfused-facedev/dri/renderD128 -init_hw_device opencl@va
ffmpeg version 6.0.1-Jellyfin Copyright © 2000-2023 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      58.  2.100 / 58.  2.100
  libavcodec    60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter    9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample  4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
[AVHWDeviceContext @ 0x5599240554c0] libva: VA-API version 1.20.0
[AVHWDeviceContext @ 0x5599240554c0] libva: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x5599240554c0] libva: Found init function __vaDriverInit_1_20
[AVHWDeviceContext @ 0x5599240554c0] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x5599240554c0] Initialised VAAPI connection: version 1.20
[AVHWDeviceContext @ 0x5599240554c0] VAAPI driver: Intel iHD driver for Intel® Gen Graphics - 23.4.0 (05e4d0d).
[AVHWDeviceContext @ 0x5599240554c0] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x559924077980] 0.0: Intel® OpenCL HD Graphics / Intel® HD Graphics 530 [0x1912]
[AVHWDeviceContext @ 0x559924077980] Intel QSV to OpenCL mapping function found (clCreateFromVA_APIMediaSurfaceINTEL).
[AVHWDeviceContext @ 0x559924077980] Intel QSV in OpenCL acquire function found (clEnqueueAcquireVA_APIMediaSurfacesINTEL).
[AVHWDeviceContext @ 0x559924077980] Intel QSV in OpenCL release function found (clEnqueueReleaseVA_APIMediaSurfacesINTEL).
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'


I'm not sure what's wrong, all the permissions are fine. I did a last resort move and did 'chmod -R 777 /dev/dri' but it still didn't work. I've installed everything necessary on the website, what am I missing?


RE: Fix Hardware Acceleration using QSV not working. - TheDreadPirate - 2023-12-05

The "validation" commands you ran were run on Ubuntu? Did you pass the GPU into the container? Can you share your docker command/docker compose?


RE: Fix Hardware Acceleration using QSV not working. - jimmythejuicer24 - 2023-12-05

Yes I ran the validation commands on Ubuntu, that's what I'm using

Here is the contents of docker-compose.yml:

version: '23.0.0'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
user: 1000:1000
group_add:
- "109"
- "44"
network_mode: 'bridge'
ports:
- 8096:8096
volumes:
- /home/lendro/jellyfin/configConfused-faceconfig
- /home/lendro/jellyfin/cacheConfused-facecache
- /home/lendro/jellyfin/mediaConfused-facemedia:ro
devices:
- /dev/dri/renderD128Confused-facedev/dri/renderD128
- /dev/dri/card0Confused-facedev/dri/card0
restart: 'unless-stopped'


RE: Fix Hardware Acceleration using QSV not working. - TheDreadPirate - 2023-12-05

On the host system you added your user to the render group? And you don't need to pass card0 into the container, AFAIK.


RE: Fix Hardware Acceleration using QSV not working. - jimmythejuicer24 - 2023-12-05

I thought I fixed it with this but it still doesn't work:

version: '23.0.0'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
group_add:
- "109"
- "44"
network_mode: 'bridge'
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
- VERSION=docker
ports:
- 8096:8096
volumes:
- /home/lendro/jellyfin/configConfused-faceconfig
- /home/lendro/jellyfin/cacheConfused-facecache
- /home/lendro/jellyfin/mediaConfused-facemedia:ro
devices:
- /dev/driConfused-facedev/dri
restart: 'unless-stopped'

I still can't figure out what's wrong


RE: Fix Hardware Acceleration using QSV not working. - TheDreadPirate - 2023-12-05

What is the output of

Code:
id lendro



RE: Fix Hardware Acceleration using QSV not working. - jimmythejuicer24 - 2023-12-05

uid=1000(lendro) gid=1000(lendro) groups=1000(lendro),4(adm),24(cdrom),27(sudo),30(dip),44(video),46(plugdev),106(input),109(render),110(lxd),999(docker)


RE: Fix Hardware Acceleration using QSV not working. - TheDreadPirate - 2023-12-05

I know you have a UID and GID in the environment config, but I think you also need

Code:
user: 1000:1000

https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#configure-with-linux-virtualization


RE: Fix Hardware Acceleration using QSV not working. - jimmythejuicer24 - 2023-12-05

version: '23.0.0'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
user: 1000:1000
group_add:
- "109"
- "44"
network_mode: 'bridge'
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
- VERSION=docker
ports:
- 8096:8096
volumes:
- /home/lendro/jellyfin/configConfused-faceconfig
- /home/lendro/jellyfin/cacheConfused-facecache
- /home/lendro/jellyfin/mediaConfused-facemedia:ro
devices:
- /dev/driConfused-facedev/dri
restart: 'unless-stopped'


Still doesn't work for me. Do you think it's possible that the changes aren't being updated? I added the line for timezone but the time stamps in the logs are still wrong.


RE: Fix Hardware Acceleration using QSV not working. - TheDreadPirate - 2023-12-05

If you are running "docker-compose down" before upping again, it should be pulling in any changes to the compose file. Try recreating the container.

docker-compose up --force-recreate