Hardware Transcoding Issue Arc A310 - myradishes - 2024-10-04
I'm having trouble playing a certain file on a roku device which I believe is running into a failure due to a transcoding problem. I believe I have transcoding setup correctly for my Arc A310 passed through to an lxc container in proxmox.
Quote:root@mediaserver:~# /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va dev/dri/renderD129 -init_hw_device opencl@va
ffmpeg version 6.0.1-Jellyfin Copyright © 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-libxml2 --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
[AVHWDeviceContext @ 0x5786159b6480] libva: VA-API version 1.22.0
[AVHWDeviceContext @ 0x5786159b6480] libva: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x5786159b6480] libva: Found init function __vaDriverInit_1_22
[AVHWDeviceContext @ 0x5786159b6480] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x5786159b6480] Initialised VAAPI connection: version 1.22
[AVHWDeviceContext @ 0x5786159b6480] VAAPI driver: Intel iHD driver for Intel® Gen Graphics - 24.2.5 (12561f6).
[AVHWDeviceContext @ 0x5786159b6480] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x5786159e7ec0] 0.0: Intel® OpenCL Graphics / Intel® Arc A310 LP Graphics
[AVHWDeviceContext @ 0x5786159e7ec0] Intel QSV to OpenCL mapping function found (clCreateFromVA_APIMediaSurfaceINTEL).
[AVHWDeviceContext @ 0x5786159e7ec0] Intel QSV in OpenCL acquire function found (clEnqueueAcquireVA_APIMediaSurfacesINTEL).
[AVHWDeviceContext @ 0x5786159e7ec0] Intel QSV in OpenCL release function found (clEnqueueReleaseVA_APIMediaSurfacesINTEL).
Hyper fast Audio and Video encoder
Quote:root@mediaserver:~# ls -l /dev/dri/
total 0
drwxr-xr-x 2 root root 120 Oct 3 12:56 by-path
crw-rw---- 1 root video 226, 0 Oct 2 00:51 card0
crw-rw---- 1 root video 226, 1 Oct 3 12:56 card1
crw-rw---- 1 1000000 100106 226, 129 Oct 2 00:51 renderD128
crw-rw---- 1 1000000 100106 226, 129 Oct 2 00:51 renderD129
Quote:root@mediaserver:~# grep jelly /etc/group
video:x:44:jellyfin
sgx:x:104:jellyfin
render:x:106:jellyfin
jellyfin:x:112:
renderD128 has been configured to point at renderD129 in case it defaults to trying to use 128. Specifying 128 in the previous ffpmeg command yields the same output noting the A310 card.
Quote:lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 226:129 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD129 dev/dri/renderD128 none bind,optional,create=file
lxc.hook.pre-start: sh -c "chown 1000000:100106 /dev/dri/renderD128"
lxc.mount.entry: /dev/dri/renderD129 dev/dri/renderD129 none bind,optional,create=file
lxc.hook.pre-start: sh -c "chown 1000000:100106 /dev/dri/renderD129"
I've tried using QSV and VAAPI(tested while specifying 129 then 128 after that failed).
Results of ffprobe.
Quote:root@mediaserver: /mnt/mediafiles/Movies# /usr/lib/jellyfin-ffmpeg/ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 /mnt/mediafiles/Movies/poop.mkv
h264
From the logs.
Quote:[2024-10-04 12:20:42.515 -07:00] [INF] "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G -ss 00:00:03.000 -init_hw_device vaapi=va:,kernel_driver=i915,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -noautorotate -i file:\"/mnt/mediafiles/Movies/poop.mkv\" -noautoscale -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:0 -codec:v:0 hevc_qsv -tag:v:0 hvc1 -preset veryfast -b:v 4003390 -maxrate 4003390 -bufsize 8006780 -profile:v:0 main -g:v:0 72 -keyint_min:v:0 72 -filter_complex \"[0:2]scale=-1:1080:fast_bilinear,scale,crop,pad=max(1920\,iw):max(1080\,ih) ow-iw)/2 oh-ih)/2:black@0,crop=1920:1080,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12:extra_hw_frames=24,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=eof_action=pass:repeatlast=0:w=1920:h=1080\" -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 1 -hls_segment_filename \"/mnt/mediafiles/jellyfin/transcode/b97ee18d5f158f34e7113dade2620775%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/mnt/mediafiles/jellyfin/transcode/b97ee18d5f158f34e7113dade2620775.m3u8\""
[2024-10-04 12:20:42.531 -07:00] [ERR] FFmpeg exited with code 1
[2024-10-04 12:20:42.629 -07:00] [ERR] Error processing request. URL "GET" "/videos/8971a4cb-00a4-5324-3d23-5c25933f8985/hls1/main/1.ts".
RE: Hardware Transcoding Issue Arc A310 - TheDreadPirate - 2024-10-04
What kernel is the host running?
Also, you should only be passing in ONE of the renderD devices. Probably card1 and renderD129. I'm assuming you have an AMD APU/7000 CPU or Intel CPU with an iGPU
And you should setup and enable low power encoding since it is required for Intel Arc. But we can get to that after you answer the question about which kernel your system is running.
RE: Hardware Transcoding Issue Arc A310 - myradishes - 2024-10-04
Yes, this is on a system with an Intel iGPU. Deleted entries in /dev/dri so only renderD129 is left, was expecting one of the cardNs to survive that haha. Transcoding options selected, decoding QSV h264 hevc mpeg2 vp9 av1 hevc-10b vp9-10b prefer os native, enable hardware decoding lowpowerh264 lowpowerhevc, allow encoding hevc allow av1, enable vpp tone mapping, enable tone mapping.
Quote:root@mediaserver:~# ls -l /dev/dri
total 0
drwxr-xr-x 2 root root 120 Oct 3 12:56 by-path
crw-rw---- 1 1000000 100106 226, 129 Oct 2 00:51 renderD129
root@mediaserver:~# uname -a
Linux mediaserver 6.8.4-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.4-2 (2024-04-10T17:36Z) x86_64 GNU/Linux
No apparent change enabling the low power options.
Quote:[2024-10-04 14:37:33.899 -07:00] [INF] "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G -ss 00:00:03.000 -hwaccel vaapi -hwaccel_output_format vaapi -noautorotate -i file:\"/mnt/mediafiles/Movies/poop.mkv\" -noautoscale -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:0 -codec:v:0 hevc_vaapi -tag:v:0 hvc1 -rc_mode VBR -b:v 4003390 -maxrate 4003390 -bufsize 8006780 -profile:v:0 main -sei -a53_cc -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -filter_complex \"[0:2]scale=-1:1080:fast_bilinear,scale,crop,pad=max(1920\,iw):max(1080\,ih) ow-iw)/2 oh-ih)/2:black@0,crop=1920:1080[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12:extra_hw_frames=24,hwdownload,format=nv12[main];[main][sub]overlay=eof_action=pass:repeatlast=0,hwupload_vaapi\" -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 1 -hls_segment_filename \"/mnt/mediafiles/jellyfin/transcode/d93a2c9330aa081bed3acdcd02f09642%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/mnt/mediafiles/jellyfin/transcode/d93a2c9330aa081bed3acdcd02f09642.m3u8\""
[2024-10-04 14:37:33.935 -07:00] [ERR] FFmpeg exited with code 1
RE: Hardware Transcoding Issue Arc A310 - myradishes - 2024-10-04
Realized what I did wrong here, the guide I followed was for an unprivileged container but mine is privileged so I had the wrong uid/gid set. It's playing now and I see the A310 being used on the host node's intel_gpu_top. For the low power option you mentioned how can I verify that is being used properly after enabling low power h264/hevc hardware encoder?
Also, it appears despite the tv/roku being turned off jellyfin is still transcoding the movie for some odd reason? Looks like it eventually killed the transcode at some point, it was going for maybe 5-10 minutes haha.
|