Skip to main content
Hardware acceleration uses your GPU to transcode media, providing 10-20x faster performance compared to CPU-only encoding while significantly reducing CPU usage.

Supported Hardware Acceleration Types

Jellyfin supports multiple hardware acceleration platforms:

Intel Quick Sync

Intel integrated graphics (6th gen+)

NVIDIA NVENC

NVIDIA GPUs (GTX 900+ series)

AMD AMF

AMD GPUs (GCN architecture+)

VA-API

Linux video acceleration API

VideoToolbox

Apple hardware (macOS/iOS)

Video4Linux

V4L2 M2M (Raspberry Pi, etc.)

Rockchip MPP

Rockchip SoC devices

Software

CPU-only encoding (no GPU)

Hardware Acceleration Configuration

Enabling Hardware Acceleration

In encoding.xml:
<HardwareAccelerationType>qsv</HardwareAccelerationType>
<EnableHardwareEncoding>true</EnableHardwareEncoding>
Available types:
  • none - Software encoding only
  • qsv - Intel Quick Sync Video
  • nvenc - NVIDIA NVENC
  • amf - AMD Advanced Media Framework
  • vaapi - VA-API (Linux)
  • videotoolbox - Apple VideoToolbox
  • v4l2m2m - Video4Linux M2M
  • rkmpp - Rockchip Media Process Platform

Intel Quick Sync Video (QSV)

Requirements

1

Hardware Requirements

  • Intel CPU with integrated graphics (6th generation or newer recommended)
  • Intel Iris Xe or UHD Graphics
  • Compatible chipset with Quick Sync support
2

Driver Requirements

Linux:
# Install Intel media drivers
sudo apt-get install intel-media-va-driver-non-free
Windows: Install latest Intel graphics drivers from Intel’s website.
3

Device Permissions (Linux)

Add Jellyfin user to video and render groups:
sudo usermod -aG video jellyfin
sudo usermod -aG render jellyfin
sudo systemctl restart jellyfin

QSV Configuration

<HardwareAccelerationType>qsv</HardwareAccelerationType>
<EnableHardwareEncoding>true</EnableHardwareEncoding>
<QsvDevice></QsvDevice>
<EnableIntelLowPowerH264HwEncoder>false</EnableIntelLowPowerH264HwEncoder>
<EnableIntelLowPowerHevcHwEncoder>false</EnableIntelLowPowerHevcHwEncoder>
For most Intel GPUs (6th-11th gen):
<HardwareAccelerationType>qsv</HardwareAccelerationType>
<EnableIntelLowPowerH264HwEncoder>false</EnableIntelLowPowerH264HwEncoder>
<EnableIntelLowPowerHevcHwEncoder>false</EnableIntelLowPowerHevcHwEncoder>

Supported Codecs (QSV)

CodecDecodeEncodeNotes
H.264All QSV generations
HEVC6th gen+
VP99th gen+ (decode only)
AV112th gen+
MPEG-2All generations
VC-1Decode only

QSV Tone Mapping

<EnableVppTonemapping>true</EnableVppTonemapping>
<VppTonemappingBrightness>16</VppTonemappingBrightness>
<VppTonemappingContrast>1</VppTonemappingContrast>
Intel VPP (Video Post Processing) provides hardware-accelerated HDR to SDR tone mapping on supported platforms.

NVIDIA NVENC

Requirements

1

Hardware Requirements

  • NVIDIA GPU with NVENC support:
    • GeForce GTX 900 series or newer
    • RTX series (best performance)
    • Quadro/Tesla professional GPUs
2

Driver Requirements

Linux:
# Install NVIDIA drivers
sudo apt-get install nvidia-driver-535

# Verify installation
nvidia-smi
Windows: Install latest GeForce or Studio drivers from NVIDIA’s website.
3

NVENC Session Limits

Consumer GPUs have encoding session limits:
  • GTX/RTX cards: 3 concurrent sessions (can be patched)
  • Quadro/Tesla: Unlimited sessions
Use nvidia-patch to remove session limits on consumer cards.

NVENC Configuration

<HardwareAccelerationType>nvenc</HardwareAccelerationType>
<EnableHardwareEncoding>true</EnableHardwareEncoding>
<EnableEnhancedNvdecDecoder>true</EnableEnhancedNvdecDecoder>

Enhanced NVDEC

<EnableEnhancedNvdecDecoder>true</EnableEnhancedNvdecDecoder>
Enables enhanced NVDEC decoder for:
  • Dolby Vision to SDR tone mapping
  • Better HDR support
  • Improved compatibility

Supported Codecs (NVENC)

CodecDecodeEncodeGeneration
H.264All NVENC
HEVCMaxwell+ (GTX 900+)
VP9Pascal+ (GTX 10xx+)
AV1Ada Lovelace (RTX 40xx)
MPEG-2Decode only
VC-1Decode only

CUDA Tone Mapping

NVENC supports CUDA-accelerated tone mapping:
<EnableTonemapping>true</EnableTonemapping>
<TonemappingAlgorithm>bt2390</TonemappingAlgorithm>
CUDA tone mapping requires:
  • FFmpeg built with CUDA support
  • Compatible NVIDIA GPU (Pascal or newer)

AMD AMF

Requirements

1

Hardware Requirements

  • AMD GPU with GCN architecture or newer:
    • Radeon RX 400 series or newer (recommended)
    • Radeon VII
    • RX 5000/6000/7000 series
2

Driver Requirements

Linux:
# Install AMD drivers and VA-API
sudo apt-get install mesa-va-drivers
Windows: Install AMD Adrenalin drivers from AMD’s website.

AMF Configuration

<HardwareAccelerationType>amf</HardwareAccelerationType>
<EnableHardwareEncoding>true</EnableHardwareEncoding>

Supported Codecs (AMF)

CodecDecodeEncodeNotes
H.264All GCN GPUs
HEVCGCN 3.0+
AV1RDNA 3 (RX 7000+)
VP9Decode only
On Linux, AMF uses VA-API as the backend. Consider using VA-API directly for better compatibility.

VA-API (Linux)

Requirements

1

Install VA-API Drivers

sudo apt-get install intel-media-va-driver-non-free
2

Verify VA-API

# Install vainfo utility
sudo apt-get install vainfo

# Check VA-API support
vainfo
Should show available profiles and entrypoints.
3

Device Permissions

# Check render device
ls -l /dev/dri/renderD128

# Add user to groups
sudo usermod -aG video jellyfin
sudo usermod -aG render jellyfin
sudo systemctl restart jellyfin

VA-API Configuration

<HardwareAccelerationType>vaapi</HardwareAccelerationType>
<EnableHardwareEncoding>true</EnableHardwareEncoding>
<VaapiDevice>/dev/dri/renderD128</VaapiDevice>
The default VA-API device is /dev/dri/renderD128, which works for most single-GPU systems.

Multiple GPUs

For systems with multiple GPUs:
# List render devices
ls -l /dev/dri/

# Output:
# renderD128  (usually Intel iGPU)
# renderD129  (usually discrete GPU)
Specify the desired device:
<VaapiDevice>/dev/dri/renderD129</VaapiDevice>

VA-API Tone Mapping

<EnableTonemapping>true</EnableTonemapping>
<TonemappingAlgorithm>bt2390</TonemappingAlgorithm>
VA-API supports hardware tone mapping on Intel GPUs (9th gen+).

Apple VideoToolbox

Requirements

  • macOS device with Apple Silicon or Intel CPU with integrated graphics
  • macOS 10.13 or newer

VideoToolbox Configuration

<HardwareAccelerationType>videotoolbox</HardwareAccelerationType>
<EnableHardwareEncoding>true</EnableHardwareEncoding>
<EnableVideoToolboxTonemapping>true</EnableVideoToolboxTonemapping>

Supported Codecs (VideoToolbox)

CodecDecodeEncodeNotes
H.264All devices
HEVCA10+ / 6th gen Intel+
VP9Decode only

Docker Configuration

Intel QSV (Docker)

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - "109"  # render group ID
    volumes:
      - /path/to/config:/config
      - /path/to/media:/media
Find your render group ID with: getent group render | cut -d: -f3

NVIDIA (Docker)

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
    volumes:
      - /path/to/config:/config
      - /path/to/media:/media
Requires NVIDIA Container Toolkit installed on the host.

AMD VA-API (Docker)

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - "109"  # render group
      - "44"   # video group
    volumes:
      - /path/to/config:/config
      - /path/to/media:/media

Performance Comparison

Typical 1080p H.264 transcoding performance:
MethodSpeedCPU UsagePower
Software (libx264)1x100%High
Intel QSV10-15x10-20%Low
NVIDIA NVENC15-20x5-10%Medium
AMD AMF10-15x10-15%Medium
VA-API10-15x10-20%Low
Speed multipliers are approximate and vary based on hardware, source material, and encoding settings.

Troubleshooting

1

Hardware Acceleration Not Working

Check:
# Verify device exists
ls -l /dev/dri/

# Check permissions
id jellyfin

# Test VA-API (if applicable)
sudo -u jellyfin vainfo

# Check Jellyfin logs
journalctl -u jellyfin -f
2

Permission Denied Errors

# Add user to required groups
sudo usermod -aG video,render jellyfin
sudo systemctl restart jellyfin

# Verify group membership
groups jellyfin
3

Quality Issues

  • Reduce CRF value for higher quality
  • Check if source supports hardware decoding
  • Verify hardware encoder supports desired codec
  • Try different tone mapping algorithm
4

NVIDIA Session Limit

If you hit the 3-session limit on consumer GPUs:
  • Apply nvidia-patch
  • Use a Quadro/Tesla GPU (no limits)
  • Reduce concurrent transcoding sessions
5

Docker Hardware Access

Ensure:
  • Devices are properly mounted (--device)
  • Correct group IDs are added (--group-add)
  • Runtime is specified for NVIDIA (--runtime nvidia)

Best Practices

Match Hardware to Workload

Use Intel QSV for efficiency, NVIDIA for maximum performance, and VA-API for compatibility.

Enable Hardware Decoding

Configure hardware decoding for codecs your GPU supports to reduce CPU usage further.

Monitor Temperatures

Ensure adequate cooling, especially during sustained transcoding sessions.

Test Before Deployment

Verify quality and compatibility with your media library before enabling for all users.

Codec Selection by Platform

Best for:
  • H.264/HEVC transcoding
  • Low power consumption
  • Integrated graphics systems
  • Multiple concurrent streams (no session limits)

Next Steps

Transcoding Settings

Fine-tune quality, codecs, and performance options

Network Configuration

Configure remote access and bandwidth limits