i’m starting to think it’s the debian base of this container image. it may just be too out of date for my GPU.
i think i’m giving up on this for now.
thanks all!
hey all!
for the life of me, i cannot get VAAPI hardware accelerated encoding to work. i always get this error:
Error: ffmpeg exited with code 234: Device creation failed: -22.
Failed to set value ‘/dev/dri/renderD128’ for option ‘vaapi_device’: Invalid argument
Error parsing global options: Invalid argument`
at ChildProcess.<anonymous> (/app/node_modules/fluent-ffmpeg/lib/processor.js:180:22)
at ChildProcess.emit (node:events:524:28)
at ChildProcess._handle.onexit (node:internal/child_process:293:12)
- AMD Radeon RX 9060 XT
- the peertube vaapi transcoding plugin is installed
- i have mesa-va-drivers and mesa-libgallium installed from bookworm backports.
- the container is rootful.
- /dev/dri is mapped
- the render group id matches between host and container.
- SELinux is set to allow containers access to devices.
no joy.
vainfo
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: can’t connect to X server!
libva info: VA-API version 1.17.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_17
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.17 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 25.0.4-1~bpo12+1 for AMD Radeon Graphics (radeonsi, gfx1200, ACO, DRM 3.63, 6.15.4-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 VAProfileNone : VAEntrypointVideoProc
i’ve also tried updating the packages from trixie and sid, and installing the firmware-linux-nonfree.
i’ve tried disabling SELinux. i’ve tried making the container permissive.
no change.
any help is appreciated! thank you!
i’m starting to think it’s the debian base of this container image. it may just be too out of date for my GPU.
i’m starting to think it’s the debian base of this container image. it may just be too out of date for my GPU.
I use podman too and I set up hardware acceleration for Jellyfin. I’ll update this with how I did it once I’m home.
Edit: Here’s my compose.yml (I use
podman-compose
):services: jellyfin: image: lscr.io/linuxserver/jellyfin:latest container_name: jellyfin dns: - 9.9.9.9 environment: - PUID=1000 - PGID=1000 - TZ=Europe/Berlin volumes: - ./config:/config:Z - ~/drive/media:/media:z devices: - /dev/dri:/dev/dri ports: - 8096:8096 - 7359:7359/udp - 1900:1900/udp restart: unless-stopped
thanks! that seems in line with what i’m doing, though my container is rootful.
I don’t use containers myself, but I bet the hardware acceleration section of the Jellyfin container install doc would be helpful.
thanks! i took a look and sadly i’ve already covered those parts. :/
Can the peertube user actually read the mapped /dev/dri path?
what i’m so surprised about is that it works for owncast, and the setup is the same.
rootful. render group isn’t named in the container and the owncast user isn’t in the group.
but it works, and peertube doesn’t.
this is a great thought and i’m not sure, probably not.
when i examine /dev/dri in the container, it has the groupid that it has on host, but not the name. peertube user is not in that group.
i tried making the render group in the container with the same gid and added peertube to it, but it didn’t change anything. this process may not be correct, however, to achieve that goal.
any suggestions for quadlet on how to bring in the render group with peertube in it?
Are you using rooted or rootless podman? I’m running rootless and am quite sure I needed to add my local user to the video group. I’m out and about, but can investigate later if you want. Otherwise you seem on the right track
the container is rootful.
any help is appreciated as i’m at a wall. :/