ErsatzTV delegates all transcoding to FFmpeg, and FFmpeg can offload the heavy lifting of video encoding to a GPU or dedicated media-processing unit. Enabling hardware acceleration dramatically reduces CPU usage, allowing a single host to transcode more simultaneous streams at higher resolutions. ErsatzTV Legacy exposes seven hardware acceleration backends through theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ErsatzTV/legacy/llms.txt
Use this file to discover all available pages before exploring further.
HardwareAccelerationKind enum; the right choice depends on your GPU and operating system.
Supported Backends
| Value | Integer | Technology | Platform |
|---|---|---|---|
None | 0 | Software (CPU-only) | All platforms |
Qsv | 1 | Intel Quick Sync Video | Linux, Windows |
Nvenc | 2 | NVIDIA NVENC/NVDEC | Linux, Windows |
Vaapi | 3 | VA-API (Video Acceleration API) | Linux |
VideoToolbox | 4 | Apple VideoToolbox | macOS, iOS |
Amf | 5 | AMD Advanced Media Framework | Linux, Windows |
V4l2m2m | 6 | V4L2 M2M codec | Raspberry Pi, embedded Linux |
Rkmpp | 7 | Rockchip MPP | Rockchip SBCs (RK3399, RK3588, etc.) |
Selecting a Backend in a Profile
Open Settings → FFmpeg Profiles, create or edit a profile, and choose the appropriate Hardware Acceleration option from the dropdown. See the FFmpeg Profiles page for the full set of profile fields.- NVENC (NVIDIA)
- QSV (Intel)
- VAAPI (Linux)
- AMF (AMD)
- VideoToolbox (macOS)
- RKMPP / V4L2M2M
NVENC uses NVIDIA’s dedicated video encoding hardware present on GeForce (GTX 750+), Quadro, and Tesla GPUs. NVDEC handles hardware-accelerated decoding on the same card.Requirements:Profile tips:
- NVIDIA driver 418.30 or newer
- Docker: NVIDIA Container Toolkit installed on the host
HardwareAcceleration=Nvenc
- Set
VideoPresettollhq(low-latency high quality) orllhp(low-latency high performance) for H.264 and HEVC. - NVENC has a hardware session limit (typically 3–5 concurrent encodes on consumer GPUs). Exceeding this causes a fallback error; use an
Unlimited Encode Sessionspatched driver or a Quadro/Tesla card for more simultaneous channels. PadModecan be set toHardwareIfPossibleto keep the padding filter on the GPU.
| VideoFormat | BitDepth | Notes |
|---|---|---|
H264 | 8-bit | Widely supported |
H264 | 10-bit | Falls back to libx264 (software) |
Hevc | 8-bit or 10-bit | Requires Maxwell Gen2+ GPU |
Software Fallback
WhenHardwareAcceleration is set to None, ErsatzTV uses FFmpeg’s software (libx264 / libx265) encoders entirely on the CPU. This is the safest and most compatible option but consumes significantly more CPU resources. Use ThreadCount to limit the number of CPU threads if ErsatzTV is sharing the host with other workloads (set to 0 for automatic).
Troubleshooting
FFmpeg exits immediately with 'No such file or directory' for /dev/dri/renderD128
FFmpeg exits immediately with 'No such file or directory' for /dev/dri/renderD128
The render device is not mapped into the container. Add the
devices section to your docker-compose.yml as shown in the VAAPI and QSV tabs above.NVENC error: 'OpenEncodeSessionEx failed: out of memory'
NVENC error: 'OpenEncodeSessionEx failed: out of memory'
You have exceeded the hardware session limit on a consumer NVIDIA GPU. Reduce the number of simultaneously active channels, or apply the
nvidia-patch to remove the session cap.QSV: 'not enough surfaces' in FFmpeg log
QSV: 'not enough surfaces' in FFmpeg log
Increase
QsvExtraHardwareFrames in the FFmpeg profile to 128 or 256.VAAPI produces green or corrupted output
VAAPI produces green or corrupted output
Verify that the correct
VaapiDriver is selected for your GPU generation. Intel Skylake+ requires iHD; older Intel hardware requires i965. Mixing them causes colour space errors.FFmpeg Profiles
Full reference for all FFmpeg profile fields.
Streaming Modes
Choose between TS, HLS Segmenter, and HLS Direct output.
