Jellyfin
I run jellyfin as a docker container. There are some special considerations to enable hardware acceleration.
A docker-compose setup
Mostly from https://jellyfin.org/docs/general/installation/container/ with advice on adding the GPU devices from https://ryanbritton.com/2022/05/hardware-transcoding-on-synology-docker-without-privileged-mode/
Grab the image
sudo docker pull jellyfin/jellyfin
Create some volumes for config and cache
These are handy so you can easily rebuild the container without losing your library data or configuration.
sudo docker volume create jellyfin-config sudo docker volume create jellyfin-cache
Write a docker compose file
version: '3.3'
volumes:
  jellyfin-config: 
    driver: local
    name: jellyfin-config
  jellyfin-cache:
    driver: local
    name: jellyfin-cache
services:
  jellyfin:
    container_name: jellyfin
    image: jellyfin/jellyfin
    network_mode: host
    restart: unless-stopped
    environment:
      - JELLYFIN_PublishedServerUrl=http://hostname.domain
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - 'jellyfin-config:/config'
      - 'jellyfin-cache:/cache'
      - type: bind
        source: /path/to/video_content
        target: /media
        read_only: true
    devices:
      - '/dev/dri/renderD128:/dev/dri/renderD128'
      - '/dev/dri/card0:/dev/dri/card0'
Create the container and start it in the background
sudo docker-compose -f docker-jellyfin.yml up -d
This should get jellyfin running on the host port 8096. You can browse to it and do initial config.
Enabling hardware acceleration
Host OS
To reduce power and enable variable bitrate encoding we need to enable huc​/guc firmware loading. Be sure firmware-misc-nonfree is installed, then add some i915 module options as below. It is described at Intel VAAPI Media Driver. (requires reboot to take effect)
options i915 enable_guc=2
Jellyfin
I'm on Intel Core i5-6200u with 9th gen GPU. Based on output of vainfo I could enable hardware decoding for:
- H264
 - HEVC
 - MPEG2
 - VP8
 
As well since I took the previous step to load firmware I can enable hardware encoding, and the two low-power encoders (H.264, HEVC).
Finally I checked "Allow encoding in HEVC format".
Verify GPU transcoding is working by switching a stream to some other resolution/bitrate, and run the intel_gpu_top utility.