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 →

HWA Tutorial voor NVIDIA GPU

Deze tutorial begeleidt je bij het instellen van volledige hardwareversnelling voor video op NVIDIA GPU's via NVENC.

Versnellingsmethoden

Hardwareversnelling voor transcoderen wordt ondersteund op NVIDIA GPU's sinds de Maxwell-architectuur.

Op Windows en Linux is NVENC de enige beschikbare methode.

NVENC/NVDEC zijn de eigen video-codec-API's van NVIDIA GPU's, die met CUDA kunnen worden gebruikt voor volledige hardwareversnelling.

Raadpleeg dit gedeelte voor bekende problemen en beperkingen.

opmerking

NVENC ondersteunt 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 NVIDIA GPU's met HEVC 10-bit decodering.

Op Windows en Linux is CUDA de enige beschikbare tone-mapping methode. Deze ondersteunt ook Dolby Vision P5 en zero-copy.

opmerking

De functie Enable enhanced NVDEC decoder schakelt tussen het nieuwere NVDEC- en het oudere CUVID-decodeerproces. Dolby Vision-ondersteuning vereist dat deze optie is aangevinkt om NVDEC in te schakelen.

::>

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

De meeste NVIDIA GPU's ondersteunen NVENC/NVDEC, maar sommige budget- en mobiele modellen (bijv. GT1030 en MX450) zijn uitzonderingen.

Controleer de video-codec-ondersteuning via de NVIDIA GPU Codec-ondersteuningsmatrix voordat je een GPU voor hardwareversnelling aanschaft.

H.264 transcoderen

AVC / H.264 8-bit wordt nog steeds veel gebruikt vanwege de uitstekende compatibiliteit. Alle NVIDIA GPU's met NVENC/NVDEC-ondersteuning kunnen deze decoderen en/of encoderen.

  • Decoderen & Encoderen H.264 8-bit - Elke NVIDIA GPU met NVENC/NVDEC-ondersteuning

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.

Maxwell+ GPU's bieden ondersteuning voor HEVC:

  • Decoderen & Encoderen HEVC 8-bit - Maxwell 2e generatie (GM206) en nieuwer

  • Decoderen HEVC 10-bit - Maxwell 2e generatie (GM206) en nieuwer

  • Encoderen HEVC 10-bit - Pascal en nieuwer

opmerking

Let op: in de Maxwell 2e generatie-serie bieden alleen de GM206-varianten ondersteuning voor HEVC 10-bit decodering. De opvolger Pascal heeft volledige ondersteuning voor HEVC 10-bit en verbeterde snelheid en kwaliteit.

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.

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

  • Decoderen AV1 8/10-bit - Ampere en nieuwer

  • Encoderen AV1 8/10-bit - Ada Lovelace en nieuwer

Andere codecs transcoderen

Raadpleeg deze links:

Snelheid en kwaliteit

Encoderingskwaliteit:

  • H.264 & HEVC - Blackwell/Ada/Ampere/Turing > Turing TU117/Volta/Pascal > Maxwell

  • AV1 - Alleen Ada Lovelace en Blackwell

Decoderings- & encoderingssnelheid binnen dezelfde generatie:

  • Modellen met meerdere NVENC/NVDEC-eenheden > Modellen met één NVENC/NVDEC-eenheid

  • Modellen met hoge GPU-kloksnelheid > Modellen met lage GPU-kloksnelheid

  • Modellen met hoge geheugenbandbreedte > Modellen met lage geheugenbandbreedte

NVENC/NVDEC-prestatietabellen:

Windows-instellingen

Windows 10 64-bit of nieuwer wordt aanbevolen. In Jellyfin 10.10 is de minimaal vereiste NVIDIA-driverversie 522.25.

Configureren op Windows-host

  1. Verwijder oud stuurprogramma met DDU als je upgrade vanaf een pre-Maxwell NVIDIA-GPU zonder schone installatie.

  2. Installeer nieuwste stuurprogramma via NVIDIA Driver Downloads via schone installatie.

  3. Schakel NVENC in Jellyfin in en vink niet-ondersteunde codecs uit.

Configureren met Windows-virtualisatie

NVIDIA Windows-stuurprogramma biedt toegang tot NVENC/NVDEC en CUDA in Windows WSL2 en Docker.

Raadpleeg Configureren op Linux Host en Configureren met Linux-virtualisatie.

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:

    • 3D - 2D/3D-engine of CUDA/GPGPU-belasting
    • Copy - Blitter/Copy-engine-belasting
    • Video Decode - Video-decodeerbelasting
    • Video Encode - Video-encoderingsbelasting
    • Cuda - CUDA/GPGPU-belasting

    NVIDIA verifiëren op Windows

Linux-installaties

64-bits Linux-distributie vereist. Voor Jellyfin 10.10 is minimaal NVIDIA-stuurprogrammaversie 520.56.06 vereist.

Configureren op Linux-host

Debian en Ubuntu Linux

Het jellyfin-ffmpeg* deb-pakket bevat geen NVIDIA-propriëtaire stuurprogramma's.

Installeer NVIDIA-stuurprogramma via distributie en configureer jellyfin-gebruikersrechten.

opmerking

Rootrechten zijn vereist.

  1. Ga ervan uit dat u de Jellyfin-repository aan uw apt-bronnenlijst hebt toegevoegd en jellyfin-server en jellyfin-web hebt geïnstalleerd.

  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. Installeer de propriëtaire NVIDIA-driver via deze links. Installeer daarna twee extra pakketten voor NVENC- en NVDEC-ondersteuning:

  4. Controleer de NVIDIA GPU-status met nvidia-smi:

    $ nvidia-smi

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 520.56.06 Driver Version: 520.56.06 CUDA Version: 11.8 |
    |-------------------------------+----------------------+----------------------+
    | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
    | | | MIG M. |
    |===============================+======================+======================|
    | 0 NVIDIA GeForce ... Off | 00000000:1C:00.0 Off | N/A |
    | 0% 44C P0 N/A / 75W | 0MiB / 1998MiB | 0% Default |
    | | | N/A |
    +-------------------------------+----------------------+----------------------+
    ...
  5. Schakel NVENC in Jellyfin in en vink 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 dat u 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. Installeer de propriëtaire NVIDIA-driver via deze link. Installeer daarna een extra pakket voor NVENC- en NVDEC-ondersteuning:

    sudo pacman -Syu nvidia-utils
  3. Controleer de NVIDIA GPU-status met nvidia-smi:

    nvidia-smi
  4. Schakel NVENC in Jellyfin in en vink niet-ondersteunde codecs uit.

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 de propriëtaire stuurprogrammapakketten van NVIDIA en hun afhankelijkheden die deze sleutelwoorden bevatten:

  • NVIDIA NVDEC CUVID - DECODEREN

  • NVIDIA NVENC - ENCODEREN

Configureren met Linux-virtualisatie

Officiële Docker

Het officiële Docker-image bevat geen propriëtair NVIDIA-stuurprogramma.

Installeer het NVIDIA-stuurprogramma en de NVIDIA Container Toolkit op het hostsysteem om Docker toegang te geven tot je GPU.

opmerking

Rootrechten zijn vereist.

  1. Installeer het propriëtaire NVIDIA-stuurprogramma op het hostsysteem (zie bovenstaande instructies).

  2. Installeer de NVIDIA Container Toolkit op het hostsysteem via deze link:

  3. 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 \
      --net=host \
      --restart=unless-stopped \
      --runtime=nvidia \
      --gpus all \
      jellyfin/jellyfin
    • Voorbeeld docker-compose-configuratiebestand in YAML:
      services:
      jellyfin:
      image: jellyfin/jellyfin
      user: 1000:1000
      network_mode: 'host'
      volumes:
      - /path/to/config:/config
      - /path/to/cache:/cache
      - /path/to/media:/media
      runtime: nvidia
      deploy:
      resources:
      reservations:
      devices:
      - driver: nvidia
      count: all
      capabilities: [gpu]
    opmerking

    Als je het upstream-probleem CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected tegenkomt, voeg deze extra devices toe aan Docker:

    /dev/nvidia-caps:/dev/nvidia-caps
    /dev/nvidia0:/dev/nvidia0
    /dev/nvidiactl:/dev/nvidiactl
    /dev/nvidia-modeset:/dev/nvidia-modeset
    /dev/nvidia-uvm:/dev/nvidia-uvm
    /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools
  4. Voeg je gebruikersnaam toe aan de videogroep:

    sudo usermod -aG video $USER
  5. Werk dynamische links bij en herstart de Docker-service:

    docker exec -it jellyfin ldconfig
    sudo systemctl restart docker
  6. Controleer de status van de NVIDIA GPU met nvidia-smi:

    docker exec -it jellyfin nvidia-smi
  7. Voor experimentele builds: verander jellyfin/jellyfin in jellyfin/jellyfin:unstable (op eigen risico).

  8. Schakel NVENC in Jellyfin in en vink niet-ondersteunde codecs uit.

opmerking

Het officiële Jellyfin Docker-image configureert automatisch de vereiste omgevingsvariabelen voor NVIDIA GPU's. Bij eigen images voeg je deze variabelen toe:

  • NVIDIA_DRIVER_CAPABILITIES=all

  • NVIDIA_VISIBLE_DEVICES=all

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.

Podman

  1. Voeg de CUDA-repo toe aan je pakketbeheerder.

    Blader in de volgende map om het juiste repositorybestand voor jouw distributie te vinden: CUDA-repo's

    Installeer het juiste repositorybestand in je pakketbeheerder. De manier om dit te doen hangt af van je pakketbeheerder en OS-release. Vervang de repo-URL in de onderstaande voorbeelden door die welke geschikt is voor jouw distributie.

    a. Fedora, RHEL, CentOS:

    sudo dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/fedora42/$(uname -m)/cuda-fedora42.repo

    b. Debian, Ubuntu:

    echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin stable main" | sudo tee /etc/apt/sources.list.d/cuda-ubuntu2404.list

    sudo apt-get update

  2. Installeer de pakketten cuda-toolkit en nvidia-container-toolkit-base

    a. Fedora, RHEL, CentOS:

    sudo dnf install cuda-toolkit nvidia-container-toolkit-base

    b. Debian, Ubuntu:

    sudo apt-get install -y cuda-toolkit nvidia-container-toolkit-base

  3. Genereer een CDI-specificatiebestand.

    sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

    Zie: Support for Container Device Interface — NVIDIA Container Toolkit

  4. Pas je podman-opdrachtregel of systemd-containerbestand aan om het apparaat te gebruiken: nvidia.com/gpu=0

    Bijvoorbeeld, je podman-opdrachtregel zou er nu zo uit moeten zien:

    podman run \
    --detach \
    --label "io.containers.autoupdate=registry" \
    --name myjellyfin \
    --publish 8096:8096/tcp \
    --device nvidia.com/gpu=0 \
    # --security-opt label=disable # Only needed for older versions of container-selinux < 2.226
    --rm \
    --user $(id -u):$(id -g) \
    --userns keep-id \
    --environment=JELLYFIN_DATA_DIR=/var/lib/jellyfin
    --environment=JELLYFIN_CONFIG_DIR=/etc/jellyfin
    --environment=JELLYFIN_LOG_DIR=/var/log/jellyfin
    --environment=JELLYFIN_CACHE_DIR=/var/cache/jellyfin
    --volume=/your/path/to/data:/var/lib/jellyfin # Replace paths with actual paths on your host's filesystem
    --volume=/your/path/to/config:/etc/jellyfin
    --volume=/your/path/to/logs:/var/log/jellyfin
    --volume=/your/path/to/cache:/var/cache/jellyfin
    --mount type=bind,source=/path/to/media,destination=/media,ro=true,relabel=private \
    docker.io/jellyfin/jellyfin:latest

    Systemd:

    [Unit]
    Description=jellyfin

    [Container]
    Image=docker.io/jellyfin/jellyfin:latest
    AutoUpdate=registry
    PublishPort=8096:8096/tcp
    UserNS=keep-id
    #SecurityLabelDisable=true # Only needed for older versions of container-selinux < 2.226
    AddDevice=nvidia.com/gpu=0
    Environment=JELLYFIN_DATA_DIR=/var/lib/jellyfin
    Environment=JELLYFIN_CONFIG_DIR=/etc/jellyfin
    Environment=JELLYFIN_LOG_DIR=/var/log/jellyfin
    Environment=JELLYFIN_CACHE_DIR=/var/cache/jellyfin
    Volume=/your/path/to/data:/var/lib/jellyfin # Replace paths with actual paths on your host's filesystem
    Volume=/your/path/to/config:/etc/jellyfin
    Volume=/your/path/to/logs:/var/log/jellyfin
    Volume=/your/path/to/cache:/var/cache/jellyfin

    [Service]
    # Inform systemd of additional exit status
    SuccessExitStatus=0 143

    [Install]
    # Start by default on boot
    WantedBy=default.target
  5. Maak de volgende udev-regel aan om ervoor te zorgen dat de GPU-apparaten worden geïnitialiseerd voordat de container start.

    Sla het volgende bestand op als /etc/udev/rules.d/nvidia.rules :

    ACTION=="add|bind", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", \
    DRIVER=="nvidia", TEST!="/dev/nvidia-uvm", \
    RUN+="/usr/bin/nvidia-modprobe", \
    RUN+="/usr/bin/nvidia-modprobe -c0 -u", \
    RUN+="/usr/bin/nvidia-modprobe -m"

Andere virtualisaties

Andere virtualisaties zijn niet geverifieerd en werken mogelijk wel of niet met NVIDIA GPU.

Zie de HWA-handleiding voor Intel GPU - Configureren met Linux-virtualisatie voor meer informatie.

Verificatie op Linux

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

  2. Gebruik het nvidia-smi-commando om het gebruik van de NVIDIA GPU en het VRAM-gebruik van elk jellyfin-ffmpeg-proces te controleren:

    $ nvidia-smi

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 520.56.06 Driver Version: 520.56.06 CUDA Version: 11.8 |
    |-------------------------------+----------------------+----------------------+
    | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
    | | | MIG M. |
    |===============================+======================+======================|
    | 0 NVIDIA GeForce ... Off | 00000000:1C:00.0 Off | N/A |
    | 43% 44C P2 36W / 75W | 274MiB / 1998MiB | 68% Default |
    | | | N/A |
    +-------------------------------+----------------------+----------------------+
    +-----------------------------------------------------------------------------+
    | Processes: |
    | GPU GI CI PID Type Process name GPU Memory |
    | ID ID Usage |
    |=============================================================================|
    | 0 N/A N/A 4024 G /usr/lib/xorg/Xorg 63MiB |
    | 0 N/A N/A 5837 C /usr/lib/jellyfin-ffmpeg/ffmpeg 195MiB |
    +-----------------------------------------------------------------------------+