[CLOSED] Podman, Peertube, AMD VAAPI
from Nico_198X@europe.pub to selfhosted@lemmy.world on 11 Jul 10:23
https://europe.pub/post/2397910

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)

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.

#selfhosted

threaded - newest

Strit@lemmy.linuxuserspace.show on 11 Jul 11:50 next collapse

Can the peertube user actually read the mapped /dev/dri path?

Nico_198X@europe.pub on 11 Jul 13:18 next collapse

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 and add container peertube user to it?

Nico_198X@europe.pub on 11 Jul 13:37 collapse

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.

El_tripped_a_fan@piefed.social on 11 Jul 13:20 next collapse

I don't use containers myself, but I bet the hardware acceleration section of the Jellyfin container install doc would be helpful.

Nico_198X@europe.pub on 11 Jul 13:35 collapse

thanks! i took a look and sadly i’ve already covered those parts. :/

Fisch@discuss.tchncs.de on 11 Jul 13:35 next collapse

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
Nico_198X@europe.pub on 11 Jul 19:39 collapse

thanks! that seems in line with what i’m doing, though my container is rootful.

shaun@lemmy.world on 11 Jul 14:05 next collapse

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

Nico_198X@europe.pub on 11 Jul 14:41 collapse

the container is rootful.

any help is appreciated as i’m at a wall. :/

shaun@lemmy.world on 17 Jul 10:29 collapse

I’m using rootless podman, not sure if that will make a big difference.

Add the user running the containers to the video using the following command:

sudo usermod -a -G video [username]

Then I have this in my quadlet for the containers that need HW acceleration. As I understand it, keep-groups means the user rights to use video resources will be passed from the OS into the container.

AddDevice=/dev/dri/renderD128:/dev/dri/renderD128
AddDevice=/dev/dri/card0:/dev/dri/card0
PodmanArgs=--group-add keep-groups

I don’t think I have anything else relevant in my set up. Hope it helps!

Nico_198X@europe.pub on 17 Jul 10:38 collapse

thank you, i will try!

what GPU are you using, btw?

shaun@lemmy.world on 17 Jul 13:19 collapse

Hope you have some success 🙂 Mine isn’t discrete, I just have an AMD Ryzen 7 4700U and I’m running off the integrated Vega graphics.

Nico_198X@europe.pub on 11 Jul 19:44 collapse

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.