Transcoding issues and hardware acceleration - glassy - 2025-03-02
Hello All,
I've been having issues with transcoding during a recent re-install of jellyfin through docker. The issue appears on any player that I've tried so far (web player on localhost, jellyfin app on webOS).
My host system is running arch, on an intel 10700K and an 7800XT (with mesa drivers). Jellyfin version is 10.9.7
What I am noticing is extremely high cpu usage even in 1080p videos, and 4k videos are almost unplayable (lets 5s buffering for 1s of playback).
My docker-compose looks like this:
Code: services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
user: 1000:1000
network_mode: 'host'
security_opt:
- no-new-privileges:true
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
group_add:
- "989"
volumes:
- /home/iakovos/Git/config:/jellyfin-config
- /home/iakovos/Git/cache:/jellyfin-cache
- /mnt/MediaA/Series:/Series2
- /mnt/MediaA/Movies:/Movies2
- /mnt/one_tb_storage/home/iakovos/Downloads/Series:/Series
- /mnt/one_tb_storage/home/iakovos/Downloads/Movies:/Movies
- /mnt/one_tb_storage/home/iakovos/Downloads/Books:/Books
- /mnt/one_tb_storage/home/iakovos/Downloads/AudioBooks:/AudioBooks
restart: 'unless-stopped'
extra_hosts:
- "host.docker.internal:host-gateway"
I've followed this guide (https://jellyfin.org/docs/general/administration/hardware-acceleration/amd/) and I can see the following outputs for the commands listed towards the virtualization section.
Code: sudo docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
Trying display: drm
libva info: VA-API version 1.21.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_21
amdgpu: os_same_file_description couldn't determine if two DRM fds reference the same file description.
If they do, bad things may happen!
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.21 (libva 2.21.0)
vainfo: Driver version: Mesa Gallium driver 24.0.8 for AMD Radeon RX 7800 XT (radeonsi, navi32, LLVM 16.0.6, DRM 3.59, 6.13.2-arch1-1)
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
VAProfileNone : VAEntrypointVideoProc
Code: sudo docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device vulkan
ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
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-opencl --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-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-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
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'vulkan'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument debug.
Applying option init_hw_device (initialise hardware device) with argument vulkan.
[AVHWDeviceContext @ 0x5bf1a6b33500] Supported validation layers:
[AVHWDeviceContext @ 0x5bf1a6b33500] VK_LAYER_MESA_device_select
[AVHWDeviceContext @ 0x5bf1a6b33500] VK_LAYER_MESA_overlay
[AVHWDeviceContext @ 0x5bf1a6b33500] GPU listing:
[AVHWDeviceContext @ 0x5bf1a6b33500] 0: AMD Radeon RX 7800 XT (RADV NAVI32) (discrete) (0x747e)
[AVHWDeviceContext @ 0x5bf1a6b33500] Device 0 selected: AMD Radeon RX 7800 XT (RADV NAVI32) (discrete) (0x747e)
[AVHWDeviceContext @ 0x5bf1a6b33500] Queue families:
[AVHWDeviceContext @ 0x5bf1a6b33500] 0: graphics compute transfer (queues: 1)
[AVHWDeviceContext @ 0x5bf1a6b33500] 1: compute transfer (queues: 4)
[AVHWDeviceContext @ 0x5bf1a6b33500] 2: sparse (queues: 1)
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device extension VK_KHR_push_descriptor
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device extension VK_KHR_sampler_ycbcr_conversion
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device extension VK_KHR_synchronization2
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device extension VK_KHR_external_memory_fd
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device extension VK_EXT_external_memory_dma_buf
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device extension VK_EXT_image_drm_format_modifier
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device extension VK_KHR_external_semaphore_fd
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device extension VK_EXT_external_memory_host
[AVHWDeviceContext @ 0x5bf1a6b33500] Using device: AMD Radeon RX 7800 XT (RADV NAVI32)
[AVHWDeviceContext @ 0x5bf1a6b33500] Alignments:
[AVHWDeviceContext @ 0x5bf1a6b33500] optimalBufferCopyRowPitchAlignment: 1
[AVHWDeviceContext @ 0x5bf1a6b33500] minMemoryMapAlignment: 4096
[AVHWDeviceContext @ 0x5bf1a6b33500] minImportedHostPointerAlignment: 4096
[AVHWDeviceContext @ 0x5bf1a6b33500] Using queue family 0 (queues: 1) for graphics
[AVHWDeviceContext @ 0x5bf1a6b33500] Using queue family 1 (queues: 4) for compute transfers
Successfully parsed a group of options.
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'
exit status 1
My configuration on the dashboard looks like this
![[Image: 3apaqyEwQcFp.png]](https://pasteboard.co/3apaqyEwQcFp.png)
Any ideas what could be wrong?
RE: Transcoding issues and hardware acceleration - TheDreadPirate - 2025-03-02
Can you share your ffmpeg log via privatebin.net? One guess is that you have HEVC unchecked. Meaning you are CPU decoding videos that are 8-bit HEVC.
You could also be audio transcoding and/or burning in subtitles. Both of which occur on the CPU.
But your ffmpeg log would show us what is going on.
Also, you are many versions behind.
RE: Transcoding issues and hardware acceleration - glassy - 2025-03-02
(2025-03-02, 05:35 PM)TheDreadPirate Wrote: Can you share your ffmpeg log via privatebin.net? One guess is that you have HEVC unchecked. Meaning you are CPU decoding videos that are 8-bit HEVC.
You could also be audio transcoding and/or burning in subtitles. Both of which occur on the CPU.
But your ffmpeg log would show us what is going on.
Also, you are many versions behind.
Thanks,
my ffmpeg logs are here https://privatebin.net/?520f273c6fe0576f#cpjpK1PhgBYEVT8ScuzVG1jtMpTJsvPrbwUUeAKUxK7
As for the version, I thought I was only a minor version behind (9 vs 10)?
RE: Transcoding issues and hardware acceleration - TheDreadPirate - 2025-03-03
The third digit is a minor version. Bug fixes and security patches only, usually. Each 10.# version is a fairly major version change for Jellyfin with new features, API changes, and dependency upgrades. For example, going from 10.9 to 10.10 comes with a major ffmpeg upgrade from 6.1 to 7.0.2. There were 4 additional 10.9.X releases (10.9.11) and we are up to 10.10.6.
But the log you shared doesn't appear to match your screenshot. In your screenshot you checked HEVC 10-bit decoding (you should also have HEVC checked) but the ffmpeg log doesn't indicate that it is hardware decoding this video. Nor does it show you have tone mapping checked (NOT VPP tone mapping).
RE: Transcoding issues and hardware acceleration - glassy - 2025-03-03
(Yesterday, 12:37 PM)TheDreadPirate Wrote: The third digit is a minor version. Bug fixes and security patches only, usually. Each 10.# version is a fairly major version change for Jellyfin with new features, API changes, and dependency upgrades. For example, going from 10.9 to 10.10 comes with a major ffmpeg upgrade from 6.1 to 7.0.2. There were 4 additional 10.9.X releases (10.9.11) and we are up to 10.10.6.
But the log you shared doesn't appear to match your screenshot. In your screenshot you checked HEVC 10-bit decoding (you should also have HEVC checked) but the ffmpeg log doesn't indicate that it is hardware decoding this video. Nor does it show you have tone mapping checked (NOT VPP tone mapping).
Hey, thanks, upgrading my jellyfin image to 10.10.6 seem to have done the trick! Only thing is now every time I switch a view (i.e. going from /dashboard to /dashboard/settings) I have to do a hard refresh. I can see in the logs that my token is invalid each time
Code: jellyfin2 | [22:23:11] [INF] [22] Jellyfin.Api.Auth.CustomAuthenticationHandler: CustomAuthentication was not authenticated. Failure message: Invalid token.
jellyfin2 | [22:23:11] [INF] [22] Jellyfin.Api.Auth.CustomAuthenticationHandler: AuthenticationScheme: CustomAuthentication was challenged.
I doubt this is related to the transcoding I've issues but is it possible it is a known issue with this version?
|