Doorgaan naar hoofdinhoud
Onofficiële Beta-vertaling

Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →

Tutorial voor hardwareversnelling met Intel GPU

Deze handleiding begeleidt je bij het instellen van volledige hardwareversnelling voor video op geïntegreerde Intel GPU's en ARC discrete GPU's via QSV en VA-API. Als je macOS gebruikt, gebruik dan in plaats daarvan VideoToolbox.

Versnellingsmethoden

Hardwareversnelde transcodering wordt ondersteund op de meeste Intel GPU's.

Op Windows is QSV de enige beschikbare methode.

Op Linux zijn er twee methoden:

  • QSV - Voorkeur op mainstream GPU's, voor betere prestaties

  • VA-API - Vereist voor pre-Broadwell legacy GPU's, voor compatibiliteit

opmerking

Linux VA-API ondersteunt bijna alle Intel GPU's.

Linux QSV ondersteunde platforms zijn beperkt tot Broadwell (5e generatie Core) en nieuwer.

De QSV-interface van Intel OneVPL / MediaSDK is een implementatie op hoog niveau gebaseerd op Linux VA-API en Windows DXVA/D3D11VA, die betere prestaties en meer afstelmogelijkheden biedt op ondersteunde platforms.

QSV kan samen met VA-API en DXVA/D3D11VA worden gebruikt voor een flexibelere hybride transcoderingspijplijn.

let op

ICL (Ice Lake) / JSL (Jasper Lake) / EHL (Elkhart Lake) en oudere generaties verliezen ondersteuning voor QSV op Linux, omdat de MediaSDK-runtime door Intel is afgeschaft en mogelijk binnen enkele jaren stopt met werken, waarna je moet overschakelen naar VA-API. Gebruik nieuwere hardware als je hardware aan het uitzoeken bent.

Lees de afschaffingsmededeling en ondersteuning voor legacy platforms voor meer informatie.

opmerking
  • In tegenstelling tot NVIDIA NVENC is er geen limiet voor gelijktijdige encodingsessies op Intel iGPU en ARC dGPU.

  • QSV en VA-API ondersteunen headless servers op zowel Windows als Linux, wat betekent dat een aangesloten monitor niet vereist is.

Tone-mappingmethoden

Hardwareversnelde HDR/DV naar SDR tone-mapping wordt ondersteund op alle Intel GPU's die HEVC 10-bit decodering hebben.

Er zijn twee verschillende methoden die op Windows en/of Linux kunnen worden gebruikt. Voor- en nadelen worden hieronder vermeld:

  1. OpenCL

    • Voordelen - Ondersteunt Dolby Vision P5, gedetailleerde afstelmogelijkheden, breed ondersteunde hardware.

    • Nadelen - De OpenCL-runtime moet soms handmatig worden geïnstalleerd op Linux.

  2. QSV VPP

    • Voordelen - Lager stroomverbruik, gerealiseerd door vaste functie LUT-hardware van Intel.

    • Nadelen - Beperkte afstelmogelijkheden, beperkte ondersteunde GPU-modellen, momenteel alleen beschikbaar op Linux.

opmerking

De functie Prefer OS native DXVA or VA-API hardware decoders schakelt tussen de native decoders en de QSV-decoders. Ondersteuning voor Dolby Vision vereist dat deze optie is aangevinkt.

GPU-hardware selecteren

Voor beginners: raadpleeg de Hardware Selectiehandleiding voor tips over het selecteren van hardware. Voor gevorderde gebruikers: lees verder in deze sectie.

let op

Gebruik geen modellen van Intel-processors die eindigen op "F" - deze hebben geen geïntegreerde GPU.

Ondersteuning voor Quick Sync Video kan worden gecontroleerd via de Intel ark-website voordat je een nieuwe GPU koopt die geschikt is voor hardwareversnelling.

H.264 transcoderen

AVC / H.264 8-bit wordt nog steeds veel gebruikt vanwege de uitstekende compatibiliteit. Alle Intel GPU's die QSV ondersteunen, kunnen dit decoderen en encoderen.

  • Decoderen & encoderen van H.264 8-bit - Elke Intel GPU die Quick Sync Video (QSV) ondersteunt

HEVC transcoderen

HEVC / H.265 blijft de eerste keuze voor het opslaan van 4K 10-bit, HDR- en Dolby Vision-video. Het heeft volwassen software-encodingondersteuning dankzij x265, evenals breed geïmplementeerde hardware-encodingondersteuning in de meeste GPU's uitgebracht na 2016.

Intel GPU's zijn geen uitzondering:

  • Decoderen & encoderen van HEVC 8-bit - Gen 9 Skylake (6e generatie Core) en nieuwer

  • Decoderen & encoderen van HEVC 10-bit - Gen 9.5 Kaby Lake (7e generatie Core), Apollo Lake, Gemini Lake (Pentium en Celeron) en nieuwer

opmerking

Let op: de 6e generatie Core met HD 5xx iGPU's heeft geen 10-bit-ondersteuning, het is het beste om 7e generatie en nieuwere processors te kiezen, die meestal HD / UHD 6xx-serie iGPU's hebben.

AV1 transcoderen

AV1 is een royaltyvrije, toekomstbestendige videocodec. Het bespaart veel opslagruimte en netwerkbandbreedte dankzij kleinere bestandsgrootte. Het nadeel is dat decoderen en encoderen zeer zwaar zijn voor de CPU. Hardwareversnelling maakt het mogelijk om AV1-streams on-the-fly te transcoderen. AV1-encoding wordt ondersteund in Jellyfin 10.9 en nieuwer.

Intel heeft ondersteuning voor AV1-versnelling toegevoegd in hun nieuwste GPU's:

  • Decoderen van AV1 8/10-bit - Gen 12 Tiger Lake (11e generatie Core) en nieuwer

  • Encoderen van AV1 8/10-bit - Gen 12.5 DG2 / ARC A-serie, Gen 12.7 Meteor Lake (14e generatie Core Mobile / 1e generatie Core Ultra) en nieuwer

opmerking

Let op: Jasper Lake- en Elkhart Lake-processors zijn 10e generatie Pentium/Celeron/Atom, die geen AV1-versnelling hebben.

Andere codecs transcoderen

Raadpleeg deze links:

Snelheid en kwaliteit

Intel verbetert de snelheid en videokwaliteit van zijn vaste-functie-encoders tussen elke generatie grafische architecturen.

Ze kunnen in 4 niveaus worden onderverdeeld op basis van hun prestaties:

  • Entry-Level - HD / UHD 600, 605 en 61x

    tip

    Deze iGPU's komen meestal uit mini-PC-doosjes of NAS-apparaten en kunnen HEVC 10-bit transcoderen en tone-mappingfilters toepassen. Je kunt niet veel verwachten vanwege prestatie- en stroombeperkingen, maar het is nog steeds geschikt voor persoonlijk gebruik.

  • Mainstream - HD / UHD 620, 630, Iris 640, 655 en de Gen 11-graphics

    tip

    Deze iGPU's hebben meer rekenkracht dan entry-level, waardoor ze meerdere 4K HDR HEVC 10-bit-transcoderingen tegelijkertijd aankunnen. Let op: de Gen 11-graphics hebben een licht verbeterde encoder-kwaliteit ten opzichte van Gen 9.

  • Hoogwaardige prestaties - UHD 7xx-serie en Iris Xe-grafische kaarten

    tip

    Deze GPU's gebruiken de Gen 12 XeLP-architectuur met AV1-hardwaredecodering, aanzienlijk verbeterde videokwaliteit en snelheid. Modellen zoals de UHD 770 en Iris Xe hebben een tweede MFX-videomotor, waardoor de gelijktijdige transcoderingcapaciteiten worden verbeterd.

  • Hardcore - ARC A- en B-serie discrete en geïntegreerde GPU's

    tip

    ARC A-serie GPU's gebruiken de Gen 12.5 XeHPG-architectuur, die voortbouwt op XeLP en AV1-hardwarecodering en verbeterde H.264- en HEVC-codering ondersteunt. Dit maakt ze concurrerend met de medium instellingen van x264- en x265-software-encoders. Alle ARC A-serie GPU-modellen hebben twee MFX-videomotoren. De coderingskwaliteit van de ARC B-serie is vergelijkbaar met zijn voorganger, maar met licht verbeterde coderingssnelheden.

OneVPL en MediaSDK

OneVPL is een nieuwe QSV-implementatie ter vervanging van MediaSDK. Beide bieden de Quick Sync Video (QSV)-runtime.

Intel ondersteunt OneVPL op Gen 12+-grafische kaarten (11e generatie Core en nieuwere processors, namelijk Tiger Lake & Rocket Lake).

opmerking
  • Het meest opvallende verschil is dat OneVPL de nieuwe AV1-hardware-encoder op ARC GPU ondersteunt.
  • FFmpeg 6.0 schakelt OneVPL in. Dit proces is naadloos voor eindgebruikers.

ARC GPU-ondersteuning

Jellyfin-server ondersteunt Intel ARC Alchemist/A-serie discrete GPU's op zowel Windows als Linux 6.2+. Voor het gebruik van ARC Battlemage/B-serie discrete GPU's op Linux is kernelversie 6.12+ vereist. Windows wordt ook ondersteund, installeer gewoon de GPU-stuurprogramma's.

Je hoeft alleen de Windows-instellingen en Linux-instellingen te volgen om deze te configureren en verifiëren.

tip
  • Resizable-BAR is alleen verplicht voor hardwareversnelling op ARC B-serie kaarten, anders crasht de media-driver de transcoder. Voor ARC A-serie kaarten is het niet verplicht, maar wordt aanbevolen om Resizable-BAR in te schakelen als processor, moederbord en BIOS dit ondersteunen voor optimale prestaties.
  • ASPM moet worden ingeschakeld in de BIOS indien ondersteund. Dit verlaagt het idle-energieverbruik van de ARC GPU aanzienlijk.
  • Standaard wordt Low-Power-codering gebruikt op ARC GPU's. GuC & HuC firmware kan ontbreken op oudere distributies, mogelijk moet je deze handmatig downloaden van de Kernel firmware git.
  • Oude kernelconfiguraties hebben mogelijk de MEI-modules niet ingeschakeld, die nodig zijn voor ARC GPU-gebruik op Linux.
  • Vanaf ARC Battlemage/B-serie discrete GPU's heeft Intel standaard de xe-kerneldriver ingeschakeld op nieuwe GPU's (Xe-2 en nieuwere architecturen) ter vervanging van de lang bestaande i915-kerneldriver. Low-Power-codering, GuC- en HuC-firmware zijn automatisch ingeschakeld, en gebruikers moeten niet verwijzen naar instellingen zoals i915.enable_guc=xxx, die niet meer relevant zijn.

Windows-instellingen

Windows 10 64-bits en nieuwer wordt aanbevolen. QSV is niet beschikbaar in Windows Docker en WSL/WSL2.

Bekende problemen en beperkingen op Windows

Raadpleeg deze sectie voor bekende problemen en beperkingen

Configureren op Windows-host

  1. Verwijder oude stuurprogramma's met DDU als je een upgrade hebt gedaan vanaf een pre-6e generatie Intel-processor zonder schone installatie.

  2. Installeer de nieuwste EXE- of INF-stuurprogramma's via het Intel Downloadcentrum via een schone installatie.

  3. Sta niet toe dat de GPU wordt overgenomen door de Windows Remote Desktop-sessie.

    • Typ gpedit.msc in het dialoogvenster van de sneltoets Win+R en voer uit om de "Local Group Policy Editor" te openen.

    • Navigeer in de linkerbomenstructuur naar [Computerconfiguratie > Beheersjablonen > Windows-onderdelen]

    • Hier vind je [Extern bureaublad-services > Host voor extern bureaublad-sessies > Omgeving voor externe sessies]

    • Dubbelklik aan de rechterkant op [Gebruik hardware-grafische adapters voor alle sessies van Extern bureaublad-services]

    • Stel [Uitgeschakeld] in het pop-upvenster in en klik op [OK], herstart het systeem.

    Configuratie van GPU voor extern bureaublad

  4. Schakel QSV in Jellyfin in en vink niet-ondersteunde codecs uit.

Verifiëren op Windows

  1. Speel een video af in de Jellyfin-webclient en activeer transcodering door een lagere resolutie of bitrate in te stellen.

  2. Open "Taakbeheer" en navigeer naar het GPU-tabblad.

  3. Controleer het gebruik van de engines als volgt.

    opmerking

    Dubbele engine-namen geven aan dat de GPU mogelijk meerdere MFX-video-engines heeft.

    • 3D - 2D/3D-engine, QSV VPP- of GPGPU-workload

    • Copy - Blitter/Copy-engine-workload

    • Video Decode - QSV-decoder- of encoder-workload

    • Video Processing - QSV VPP-processorworkload

    • Compute - GPGPU- of QSV VPP-workload (alleen beschikbaar op ARC / DG2+)

    Intel verifiëren op Windows

Linux-installaties

Een 64-bit Linux-distributie is vereist. Ondersteunde GPU's variëren per kernel- en firmwareversies.

Bekende problemen en beperkingen op Linux

Raadpleeg deze sectie voor bekende problemen en beperkingen

Configureren op Linux-host

Debian en Ubuntu Linux

Het jellyfin-ffmpeg* deb-pakket bevat alle benodigde gebruikersmodus Intel-media-stuurprogramma's, behalve OpenCL (zie hieronder).

opmerking

Rootrechten zijn vereist.

  1. Als je de Jellyfin-repository aan je apt-bronnenlijst hebt toegevoegd en jellyfin-server en jellyfin-web hebt geïnstalleerd, en je kiest voor vanilla ffmpeg in plaats van jellyfin-ffmpeg, installeer dan de volgende Intel-pakketten.

    opmerking

    Bij Debian moet je "non-free" aan je apt-configuratie toevoegen.

  2. Installeer het jellyfin-ffmpeg7-pakket. Verwijder het verouderde jellyfin-metapakket als dit afhankelijkheden verstoort:

    sudo apt update && sudo apt install -y jellyfin-ffmpeg7
  3. Controleer of er minstens één renderD* apparaat bestaat in /dev/dri. Zo niet, upgrade dan je kernel of schakel de iGPU in via de BIOS.

    opmerking

    Let op de rechten en de groep die schrijftoegang heeft, in dit geval is dat render:

    $ ls -l /dev/dri

    total 0
    drwxr-xr-x 2 root root 120 Mar 5 05:15 by-path
    crw-rw----+ 1 root video 226, 0 Mar 5 05:15 card0
    crw-rw----+ 1 root video 226, 1 Mar 5 05:15 card1
    crw-rw----+ 1 root render 226, 128 Mar 5 05:15 renderD128
    crw-rw----+ 1 root render 226, 129 Mar 5 05:15 renderD129
  4. Voeg de gebruiker jellyfin toe aan de groep render en herstart de jellyfin-service:

    opmerking

    Bij sommige releases kan de groep video of input zijn in plaats van render.

    sudo usermod -aG render jellyfin
    sudo systemctl restart jellyfin
  5. Controleer de versie van intel-opencl-icd die de Linux-distributie levert:

    opmerking

    Dit pakket is mogelijk niet beschikbaar voor nieuwere distributies omdat het momenteel afhankelijk is van LLVM 14, wat mogelijk niet beschikbaar is in releases zoals Debian Trixie. Als dit het geval is, kan in plaats daarvan een release uit de Intel compute-runtime repository worden gebruikt.

    $ apt policy intel-opencl-icd

    intel-opencl-icd:
    Installed: (none)
    Candidate: 22.14.22890-1
    ...
  6. Als de versie nieuwer is dan 22.xx.xxxxx, installeer deze dan. Voor nieuwste producten zoals N95/N100 en Arc A380 is ondersteuning beschikbaar in 23.xx.xxxxx en hoger. Installeer anders vanaf de Intel compute-runtime repository.

    sudo apt install -y intel-opencl-icd
  7. Controleer de ondersteunde QSV/VA-API-codecs:

    opmerking
    • iHD driver geeft ondersteuning aan voor de QSV- en VA-API-interfaces.

    • i965 driver geeft alleen ondersteuning aan voor de VA-API-interface, die alleen moet worden gebruikt op pre-Broadwell-platforms.

    sudo /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128

    libva info: VA-API version 1.17.0
    libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
    libva info: Found init function __vaDriverInit_1_17
    libva info: va_openDriver() returns 0
    Trying display: drm
    vainfo: VA-API version: 1.17 (libva 2.17.0)
    vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.1.2 (xxxxxxx)
    vainfo: Supported profile and entrypoints
    ...
  8. Controleer de status van de OpenCL-runtime:

    sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device opencl@va

    [AVHWDeviceContext @ 0x55cc8ac21a80] 0.0: Intel(R) OpenCL HD Graphics / Intel(R) Iris(R) Xe Graphics [0x9a49]
    [AVHWDeviceContext @ 0x55cc8ac21a80] Intel QSV to OpenCL mapping function found (clCreateFromVA_APIMediaSurfaceINTEL).
    [AVHWDeviceContext @ 0x55cc8ac21a80] Intel QSV in OpenCL acquire function found (clEnqueueAcquireVA_APIMediaSurfacesINTEL).
    [AVHWDeviceContext @ 0x55cc8ac21a80] Intel QSV in OpenCL release function found (clEnqueueReleaseVA_APIMediaSurfacesINTEL).
    ...
  9. Wil je de tweede GPU gebruiken, wijzig dan renderD128 in renderD129 in het Jellyfin-dashboard.

  10. Schakel QSV of VA-API in Jellyfin in en vink de niet-ondersteunde codecs uit.

Linux Mint

Linux Mint gebruikt Ubuntu als pakketbasis.

Volg de configuratiestappen voor Debian en Ubuntu Linux, maar installeer alle Jellyfin-pakketten jellyfin-server, jellyfin-web en jellyfin-ffmpeg7 handmatig vanaf de Jellyfin Server Releases-pagina. Zorg ook dat je de juiste codenaam kiest via de officiële versiekaarten.

Arch Linux

opmerking

Rootrechten zijn vereist.

  1. Installeer het Archlinux/extra jellyfin-ffmpeg-pakket:

    sudo pacman -Syu jellyfin-ffmpeg
  2. Intel-media-drivers in gebruikersmodus en de OpenCL-runtime moeten handmatig worden geïnstalleerd om QSV/VA-API in te schakelen:

  3. Controleer de QSV/VA-API-codecs en OpenCL-runtime-status:

    sudo pacman -Syu libva-utils
    sudo vainfo --display drm --device /dev/dri/renderD128
    sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device opencl@va
  4. Raadpleeg de resterende delen van Debian en Ubuntu Linux.

Andere Distro's

We bieden draagbare jellyfin-ffmpeg-binaries voor distro's zonder vaste onderhouder.

Download ze via een van deze links:

opmerking

Minimale vereisten voor glibc en Linux-versies:

  • x86_64 / amd64 - glibc ≥ 2.28, Linux ≥ 4.18 (meeste distro's uit 2018 en later)

Pak uit en installeer op het juiste pad, wijzig het FFmpeg-pad in het Jellyfin-dashboard:

opmerking

Rootrechten zijn vereist.

cd ~/
mkdir -p jellyfin-ffmpeg
wget https://repo.jellyfin.org/releases/ffmpeg/<VERSION>/jellyfin-ffmpeg_<VERSION>_portable_linux64-gpl.tar.xz
tar -xvf jellyfin-ffmpeg_<VERSION>_portable_linux64-gpl.tar.xz -C jellyfin-ffmpeg
sudo mv jellyfin-ffmpeg /usr/lib
sudo ldd -v /usr/lib/jellyfin-ffmpeg/ffmpeg

Installeer andere benodigde Intel-stuurprogrammapakketten met deze sleutelwoorden:

  • Intel media driver - iHD

  • Intel vaapi driver - i965

  • Intel media sdk - MFX

  • Intel oneVPL-intel-gpu - VPL

  • Intel compute runtime - OpenCL

Configureren met Linux-virtualisatie

Officiële Docker

Het officiële Docker-image bevat alle benodigde Intel-media-stuurprogramma's en OpenCL-runtime.

Je hoeft alleen de render-groep-ID van de host aan Docker door te geven en configuraties aan te passen.

  1. Vraag de id van de render-groep op het hostsysteem op en gebruik deze in de Docker CLI of docker-compose-bestand:

    opmerking

    Bij sommige releases kan de groep video of input zijn in plaats van render.

    getent group render | cut -d: -f3
  2. Gebruik de docker-opdrachtregel of docker compose:

    • Voorbeeld opdrachtregel:

      docker run -d \
      --name=jellyfin \
      --volume /path/to/config:/config \
      --volume /path/to/cache:/cache \
      --volume /path/to/media:/media \
      --user 1000:1000 \
      --group-add="122" \ # Change this to match your "render" host group id and remove this comment
      --net=host \
      --restart=unless-stopped \
      --device /dev/dri/renderD128:/dev/dri/renderD128 \
      jellyfin/jellyfin
    • Voorbeeld docker-compose configuratiebestand in YAML:

      services:
      jellyfin:
      image: jellyfin/jellyfin
      user: 1000:1000
      group_add:
      - '122' # Change this to match your "render" host group id and remove this comment
      network_mode: 'host'
      volumes:
      - /path/to/config:/config
      - /path/to/cache:/cache
      - /path/to/media:/media
      devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
  3. Als u de tweede GPU op uw systeem wilt gebruiken, wijzig dan renderD128 in renderD129.

  4. Om de onstabiele build te proberen, verander jellyfin/jellyfin in jellyfin/jellyfin:unstable op eigen risico.

  5. Controleer de QSV- en VA-API-codecs:

    docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/vainfo
  6. Controleer de OpenCL runtime-status:

    docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va -init_hw_device opencl@va
  7. Schakel QSV of VA-API in Jellyfin in en vink de niet-ondersteunde codecs uit.

Linuxserver.io Docker

LSIO Docker-images worden onderhouden door linuxserver.io, raadpleeg hun documentatie op GitHub - linuxserver/docker-jellyfin.

opmerking

De paden van Jellyfin-configuratie- en gegevensmappen in de officiële en LSIO Docker-images zijn verschillend. Daarom kunnen ze niet eenvoudig worden uitgewisseld.

Kubernetes

Dit volgt dezelfde principes als voor Docker, met één kleine wijziging dat uw container binnen de pod als privileged moet worden uitgevoerd.

De apparaten in Kubernetes worden toegevoegd als hostpadkoppelingen, ze worden niet gescheiden in aparte volumes zoals in het Docker-voorbeeld.

  1. Voorbeeld Kubernetes-configuratiebestand (API versie 1) in YAML:

    # Example of an incomplete deployment spec
    apiVersion: apps/v1
    kind: Deployment
    metadata: ...
    spec:
    template:
    metadata: ...
    spec:
    securityContext:
    runAsUser: 1000 # Similar to "user: 1000:1000" on Docker
    runAsGroup: 1000
    supplementalGroups:
    - 122 # Change this to match your "render" host group id and remove this comment
    containers:
    - name: 'jellyfin'
    image: ...
    ports: ...
    env: ...
    securityContext:
    privileged: true # Container must run as privileged inside of the pod
    volumeMounts:
    - name: 'render-device'
    mountPath: '/dev/dri/renderD128'
    volumes:
    - name: 'render-device'
    hostPath:
    path: '/dev/dri/renderD128'
  2. Wanneer de pod start, kun je de QSV- en VA-API-codecs controleren.

    Als je error: failed to initialize display krijgt, controleer dan of de supplementalGroups correct zijn.

    kubectl exec <JELLYFIN_POD_NAME> -- /usr/lib/jellyfin-ffmpeg/vainfo
  3. Schakel QSV of VA-API in Jellyfin in en vink de niet-ondersteunde codecs uit.

LXC- en LXD-container

let op

Dit is getest met LXC 3.0 en werkt mogelijk niet met oudere versies.

  1. Vraag de id van de render-groep op het hostsysteem op.

    opmerking

    In sommige releases kan de groep video of input zijn in plaats van render.

    getent group render | cut -d: -f3
  2. Installeer de benodigde stuurprogramma's op het hostsysteem.

  3. Voeg je GPU toe aan de container:

    lxc config device add <CONTAINER_NAME> gpu gpu gid=<GID_OF_HOST_RENDER_GROUP>
  4. Controleer of de vereiste apparaten in de container aanwezig zijn:

    $ lxc exec jellyfin -- ls -l /dev/dri

    total 0
    crw-rw---- 1 root video 226, 0 Jun 4 02:13 card0
    crw-rw---- 1 root video 226, 0 Jun 4 02:13 controlD64
    crw-rw---- 1 root video 226, 128 Jun 4 02:13 renderD128
  5. Configureer Jellyfin om QSV- of VA-API-versnelling te gebruiken en wijzig indien nodig de standaard GPU renderD128.

LXC op Proxmox

  1. Zorg dat je GPU beschikbaar is als DRI-renderapparaat op de Proxmox-host, bijv. /dev/dri/renderD128. Zo niet, installeer dan de benodigde stuurprogramma's op de host.

  2. Proxmox VE 8 of nieuwer:

    Stel een Device Passthrough in voor het render-apparaat via het Resources-gedeelte in de webinterface. Zorg dat je de juiste GID instelt via de geavanceerde opties in het dialoogvenster, bijvoorbeeld 989 voor de render-groep. GID's kun je opzoeken in /etc/group binnen de LXC.

    opmerking

    Je moet ingelogd zijn als root. Andere beheerdersaccounts mogen deze actie niet uitvoeren.

    Proxmox VE 7 of ouder:

    opmerking
    • Jellyfin moet draaien in een privileged LXC-container.

    • Een bestaande unprivileged container kun je converteren naar privileged door een backup te maken en deze als privileged te herstellen.

    Voeg je GPU toe aan de container door /etc/pve/lxc/<CONTAINER_ID>.conf te bewerken.

    Mogelijk moet je de GID's in onderstaande voorbeelden aanpassen aan die op jouw host.

    let op

    Dit is getest op Proxmox VE 7.1 - op eerdere versies moet je mogelijk cgroup2 wijzigen in cgroup.

    lxc.cgroup2.devices.allow: c 226:0 rwm
    lxc.cgroup2.devices.allow: c 226:128 rwm
    lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
  3. Herstart je container en installeer de benodigde stuurprogramma's in je container.

  4. Voeg de jellyfin-gebruiker toe aan de groep die je in Stap 2 hebt gekozen, d.w.z. de groep die eigenaar is van het DRI-renderapparaat binnen de LXC.

  5. Configureer Jellyfin om QSV- of VA-API-versnelling te gebruiken en wijzig indien nodig de standaard GPU renderD128.

Verificatie op Linux

opmerking

Rootrechten zijn vereist.

  1. Installeer het pakket intel-gpu-tools op het hostsysteem, dat wordt gebruikt voor het debuggen van Intel-grafische drivers op Linux. De naam verschilt per distributie.

    • Op Debian & Ubuntu:

      sudo apt update && sudo apt install -y intel-gpu-tools
    • Op Arch Linux:

      sudo pacman -Syu intel-gpu-tools
  2. Speel een video af in de Jellyfin-webclient en activeer videotranscodering door een lagere resolutie of bitrate in te stellen.

  3. Gebruik het commando intel_gpu_top om het gebruik van de engines te controleren:

    opmerking

    Dubbele engine-namen geven aan dat de GPU mogelijk meerdere MFX-video-engines heeft.

    • Render/3D - 2D/3D-engine, QSV VPP of GPGPU-workload
    • Blitter - Blitter/copy-engine-workload
    • Video - QSV-decoder of encoder-workload
    • VideoEnhance - QSV VPP-processor-workload
    • Compute - GPGPU of QSV VPP-workload (alleen beschikbaar op ARC / DG2+)
    sudo intel_gpu_top

    intel-gpu-top: Intel Tigerlake (Gen12) @ /dev/dri/card0 - 86/ 349 MHz; 54% RC6
    441 irqs/s

    ENGINES BUSY MI_SEMA MI_WAIT
    Render/3D 19.86% |████████▊ | 0% 0%
    Blitter 0.00% | | 0% 0%
    Video 2.17% |█ | 0% 0%
    VideoEnhance 3.52% |█▋ | 0% 0%

    PID NAME Render/3D Blitter Video VideoEnhance
    ...

Energiezuinige codering

Intel-video-encoders op Gen 9+-grafische kaarten ondersteunen twee coderingsmodi:

  • Energiezuinige/LP-codering (VDEnc + HuC)

  • Niet-energiezuinige/LP-codering (PAK + media kernel + VME)

Energiezuinige codering kan het GPU-gebruik verminderen met behulp van de HuC-firmware.

Dit kan nuttig zijn voor het versnellen van op OpenCL gebaseerde HDR/DV-tone-mapping.

tip

Meer gedetailleerde informatie over Intel-videohardware vind je in de Intel media driver repo.

LP-modus hardware-ondersteuning

opmerking

Gen X verwijst naar de Intel grafische architectuur in plaats van de CPU-generatie. (d.w.z. Gen 9-graphics ≠ processors van de 9e generatie)

  • Gen 9.x SKL+-grafische kaarten - Ondersteunen niet-LP en LP-codering (alleen H.264).

  • Gen 11 ICL-grafische kaarten - Ondersteunen beide coderingsmodi.

  • Gen 11 JSL/EHL-grafische kaarten - Ondersteunen alleen LP-coderingsmodus.

  • Gen 12 TGL/DG1+-grafische kaarten - Ondersteunen beide coderingsmodi.

  • Gen 12.5 DG2/ARC A-Series - Ondersteunen alleen LP-coderingsmodus.

  • Gen 12.7 MTL/ARL, Gen 13 (of Gen 20?) LNL/BMG en nieuwer - Ondersteunen alleen LP-coderingsmodus.

LP-modus systeemondersteuning

  • Windows ondersteunt beide modi standaard. Geen extra configuratie nodig.

  • Linux ondersteunt beide modi standaard alleen op Gen 12 ADL+.

    Op oudere platforms kan de LP-modus handmatig worden geconfigureerd door een parameter aan het i915-kernelstuurprogramma door te geven.

LP-modus configureren en verifiëren op Linux

let op

Deze instelling is alleen nodig als je een Intel Jasper Lake- of **Elkhart Lake-**processor gebruikt, of als je een snellere OpenCL-tone-mapping op Linux wilt.

opmerking

Rootrechten zijn vereist.

  1. Installeer de nieuwste linux-firmware-pakketten op het hostsysteem. De naam verschilt per distributie.

    • Op Debian:

      sudo apt update && sudo apt install -y firmware-linux-nonfree
    • Op Ubuntu:

      sudo apt update && sudo apt install -y linux-firmware
    • Op Arch Linux:

      sudo pacman -Syu linux-firmware
    • Download firmware rechtstreeks uit de Linux-repository:

      cd ~/
      git clone --depth=1 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
      sudo mkdir -p /usr/lib/firmware
      sudo cp -r linux-firmware/i915 linux-firmware/xe /usr/lib/firmware
  2. Voeg de vereiste i915-kernelparameter toe op het hostsysteem om het laden van GuC- en HuC-firmware in te schakelen:

    • Controleer welke kernelmodule in gebruik is. Ga naar stap 3 als de xe-kerneldriver in gebruik is.
    opmerking

    ARC Battlemage/B-serie, Core Ultra 200V-serie (Lunar Lake) en nieuwere GPU's (Xe-2 en nieuwere architecturen) zijn overgestapt op de xe-kerneldriver in plaats van de i915-driver. Deze stap is niet meer relevant.

    lspci -knn | grep -E "i915|xe|VGA|Display"

    00:02.0 Display controller [0380]: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] [8086:46a6] (rev 0c)
    Kernel driver in use: i915
    Kernel modules: i915, xe
    03:00.0 VGA compatible controller [0300]: Intel Corporation DG1 [Iris Xe MAX Graphics] [8086:4905] (rev 01)
    Kernel driver in use: i915
    Kernel modules: i915, xe
    • Schakel GuC in voor het laden van HuC-firmware in de i915-kerneldriver:
    opmerking

    DG1, 12e (ADL-P), 13e, 14e generatie en ARC Alchemist/A-serie GPU's hebben standaard enable_guc=3 ingeschakeld. Sla deze stap over voor deze GPU's, anders schakel je functies uit die standaard actief zijn.

    sudo mkdir -p /etc/modprobe.d
    sudo sh -c "echo 'options i915 enable_guc=2' >> /etc/modprobe.d/i915.conf"
  3. Werk de initramfs en grub bij. De commando's verschillen per distributie.

    • Op Debian & Ubuntu:

      sudo update-initramfs -u && sudo update-grub
    • Op Arch Linux:

      sudo mkinitcpio -P && sudo update-grub
  4. Start het systeem opnieuw op en controleer de GuC- en HuC-status met de volgende opdrachten. Zorg ervoor dat er geen FAIL of ERROR in de uitvoer staat.

    sudo reboot
    sudo dmesg | grep -E "i915|xe"
    sudo sh -c "cat /sys/kernel/debug/dri/0/gt*/uc/guc_info"
    sudo sh -c "cat /sys/kernel/debug/dri/0/gt*/uc/huc_info"
    • Als je een No such file or directory-foutmelding krijgt bij het uitvoeren van de laatste twee opdrachten, probeer dan een dri-apparaat met een ander nummer te bevragen, bijvoorbeeld 1:

      sudo sh -c "cat /sys/kernel/debug/dri/1/gt*/uc/guc_info"
      sudo sh -c "cat /sys/kernel/debug/dri/1/gt*/uc/huc_info"
    • Op zeer oude kernels (4.16 en ouder) kunnen de laatste twee opdrachten er als volgt uitzien:

      sudo cat /sys/kernel/debug/dri/0/i915_guc_load_status
      sudo cat /sys/kernel/debug/dri/0/i915_huc_load_status
  5. Nu kun je veilig de Intel Low-Power encoder inschakelen in het Jellyfin-dashboard.

tip

Aanvullende lectuur voor meer distributies: