Skip to main content

Documentation 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.

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 the HardwareAccelerationKind enum; the right choice depends on your GPU and operating system.
You must use the correct Docker image variant for your GPU type. Using a CPU-only image on an NVIDIA host will silently fall back to software transcoding even when NVENC is selected in your FFmpeg profile. Match the image tag to your hardware.

Supported Backends

ValueIntegerTechnologyPlatform
None0Software (CPU-only)All platforms
Qsv1Intel Quick Sync VideoLinux, Windows
Nvenc2NVIDIA NVENC/NVDECLinux, Windows
Vaapi3VA-API (Video Acceleration API)Linux
VideoToolbox4Apple VideoToolboxmacOS, iOS
Amf5AMD Advanced Media FrameworkLinux, Windows
V4l2m2m6V4L2 M2M codecRaspberry Pi, embedded Linux
Rkmpp7Rockchip MPPRockchip 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 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:
  • NVIDIA driver 418.30 or newer
  • Docker: NVIDIA Container Toolkit installed on the host
  • HardwareAcceleration = Nvenc
Docker Compose setup:
# docker/docker-compose.nvidia.yml
services:
    ersatztv:
        privileged: true
        build:
            context: ..
            dockerfile: docker/Dockerfile
        environment:
            NVIDIA_VISIBLE_DEVICES: all
            NVIDIA_DRIVER_CAPABILITIES: compute,utility,video
        deploy:
            resources:
                reservations:
                    devices:
                        - driver: nvidia
                          count: 1
                          capabilities: [gpu]
Profile tips:
  • Set VideoPreset to llhq (low-latency high quality) or llhp (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 Sessions patched driver or a Quadro/Tesla card for more simultaneous channels.
  • PadMode can be set to HardwareIfPossible to keep the padding filter on the GPU.
Supported formats with NVENC:
VideoFormatBitDepthNotes
H2648-bitWidely supported
H26410-bitFalls back to libx264 (software)
Hevc8-bit or 10-bitRequires Maxwell Gen2+ GPU

Software Fallback

When HardwareAcceleration 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).
A single modern CPU core can sustain roughly 2–4 simultaneous software transcodes at 720p H.264. For more channels or 1080p output, hardware acceleration is strongly recommended.

Troubleshooting

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.
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.
Increase QsvExtraHardwareFrames in the FFmpeg profile to 128 or 256.
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.

Build docs developers (and LLMs) love