How to use Jellyfin Hardware Acceleration correctly

Hi, I don’t know too much about TrueNAS configs or similar, this is the background:

  • I have an AMD Ryzen 5 5600GT that has an APU.
  • I created the Jellyfin app under the Apps section.
  • On Jellyfin I configured to use the VAAPI and it works but not completely, If I use Chrome or any Chromium app or the Jellyfin Media Player works, but if I use Firefox or the Android TV App (for Fire TV) the H.265 codec fails and doesn’t render and gives the “Playback failed due to a fatal player error.”
  • I’ve checked the log FFmpeg logs and I can read this error:
    [vist#0:0/hevc @ 0x55ad598cb480] [dec:hevc @ 0x55ad59899740] No device available for decoder: device type vaapi needed for codec hevc.
    [vist#0:0/hevc @ 0x55ad598cb480] [dec:hevc @ 0x55ad59899740] Hardware device setup failed for decoder: Generic error in an external library
    [vost#0:0/av1_vaapi @ 0x55ad59859100] Error initializing a simple filtergraph
    Error opening output file /cache/transcodes/96aa673372e51b74ae25bc7d46bb25af.m3u8.
    Error opening output files: Generic error in an external library

How can I fix that and play the videos without errors on the Android TV App (firefox it’s optional)

Same problem. Following the topic

Here’s how I did it on mine. I made a custom docker-compose app, and my YaML looks like this:

services:
  jellyfin:
    container_name: jellyfin
    deploy:
      resources:
        limits:
          cpus: '6'
          memory: 8192M
    devices:
      - /dev/dri:/dev/dri
      - /dev/kfd:/dev/kfd
    environment:
      - PUID=<jellyfin UID>
      - PGID=<jellyfin GID>
      - TZ=<your TZ string here>
      - DOCKER_MODS=linuxserver/mods:jellyfin-amd
    image: lscr.io/linuxserver/jellyfin:latest
    ports:
      - '8096:8096'
      - '8920:8920'
      - 7359:7359/udp
      - 1900:1900/udp
    restart: unless-stopped
    volumes:
      - /mnt/nvme-pool/apps/jellyfin:/config
      - /mnt/hdd-pool/media/videos:/data:ro

This will set up Jellyfin using the lscr.io docker-compose version, adding in the “jellyfin-amd” docker mod, and allowing access to the /dev/dri and /dev/kfd devices for HW transcoding. It also lets you have a separate “jellyfin” user and group for security, and places the Jellyfin config in one place (I put mine on an NVMe pool) and all the media in another place (on my HDD RAID pool). I also added in a “deploy” section to limit the CPUs and RAM the way the official ix apps do, but I’m not sure this works (probably not).