- Add 4 Playwright screenshots: main UI, scanning, title mapping, mobile - Embed screenshots in README, index.md, and quickstart.md - Sanitize docs: replace real name/hostname (alan/strahl) with generic examples (mediauser/encode-box) - ffmpeg.md: add NVENC, QSV, and VAAPI hardware acceleration sections; document QSV custom build requirement and jellyfin-ffmpeg workaround
3.2 KiB
ffmpeg
ffmpeg is the default transcoder in Discarr. It handles HEVC encoding and is required for disc metadata scanning regardless of which transcoder you use for encoding.
Requirements
ffmpeg— encoderffprobe— disc metadata scanning (required even if using HandBrake for encoding)
Both are installed by install.sh or bundled in the Docker image.
Encode arguments
Control encode quality and speed with FFMPEG_ARGS:
# Default (CRF 22, medium preset — good quality/size balance)
FFMPEG_ARGS=-c:v libx265 -crf 22 -preset medium -c:a aac -b:a 192k
# Faster encode, slightly larger file
FFMPEG_ARGS=-c:v libx265 -crf 22 -preset fast -c:a aac -b:a 192k
# Smaller file, slower encode
FFMPEG_ARGS=-c:v libx265 -crf 24 -preset slow -c:a aac -b:a 192k
# Hardware-accelerated (NVIDIA NVENC)
FFMPEG_ARGS=-c:v hevc_nvenc -preset p4 -cq 22 -c:a aac -b:a 192k
# Keep all audio tracks (useful for multi-language discs)
FFMPEG_ARGS=-c:v libx265 -crf 22 -preset medium -c:a copy -map 0
!!! tip "CRF values"
Lower CRF = better quality, larger file. For HEVC (libx265):
| CRF | Quality | Typical use |
|---|---|---|
| 18–20 | Near-lossless | Archival |
| 22–24 | High quality | Standard library |
| 26–28 | Good quality | Space-constrained |
Hardware acceleration
Hardware encoding is significantly faster than software (libx265) but requires a supported GPU and the right ffmpeg build.
NVIDIA NVENC
Most distro-packaged ffmpeg builds include NVENC support. Requires the NVIDIA driver (no CUDA toolkit needed at runtime).
# H.265 via NVENC
FFMPEG_ARGS=-c:v hevc_nvenc -preset p4 -cq 22 -c:a aac -b:a 192k
# Verify NVENC is available
ffmpeg -encoders | grep nvenc
Intel QSV (Quick Sync Video)
!!! warning "Custom ffmpeg build required"
Most distro-packaged ffmpeg builds do not include QSV support — it requires --enable-libmfx (legacy) or --enable-libvpl + --enable-qsv (oneVPL, Intel 11th gen+) at compile time.
**Easiest option:** use `jellyfin-ffmpeg`, which ships QSV-enabled builds for Ubuntu/Debian:
```bash
# Add Jellyfin repo and install jellyfin-ffmpeg
curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash
sudo apt install jellyfin-ffmpeg7
# Then point Discarr at the jellyfin binary
FFMPEG_BIN=/usr/lib/jellyfin-ffmpeg/ffmpeg
FFPROBE_BIN=/usr/lib/jellyfin-ffmpeg/ffprobe
```
Alternatively, build ffmpeg from source with `--enable-libvpl` (see [FFmpeg compilation guide](https://trac.ffmpeg.org/wiki/CompilationGuide)).
# H.265 via QSV (requires QSV-enabled ffmpeg)
FFMPEG_ARGS=-c:v hevc_qsv -global_quality 22 -c:a aac -b:a 192k
# Verify QSV is available
ffmpeg -encoders | grep qsv
ffmpeg -hwaccels | grep qsv
VAAPI (AMD/Intel on Linux)
Standard distro ffmpeg builds usually include VAAPI. Works on AMD GPUs and Intel integrated graphics.
# H.265 via VAAPI
FFMPEG_ARGS=-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' -c:v hevc_vaapi -qp 22 -c:a aac -b:a 192k
# Verify VAAPI device
ls /dev/dri/renderD*
ffmpeg -hwaccels | grep vaapi
Checking what your ffmpeg supports
ffmpeg -codecs | grep hevc
ffmpeg -hwaccels
ffmpeg -encoders | grep -E "nvenc|qsv|vaapi|hevc"