# ErsatzTV FFmpeg Custom FFmpeg Docker image used as the base for ErsatzTV containers. Forked from [ErsatzTV/ErsatzTV-ffmpeg](https://github.com/ErsatzTV/ErsatzTV-ffmpeg) after upstream archival (Feb 2026). ## Project Structure ``` images/linux/amd64/Dockerfile # The main (and only) Dockerfile .gitea/workflows/build.yml # Gitea Actions workflow ``` ## How It Works Single-stage compile of FFmpeg 7.1.1 from source on Ubuntu Noble (`ghcr.io/linuxserver/baseimage-ubuntu:noble`). The Dockerfile: 1. Installs build deps + Intel GPU SDK + CUDA toolkit 2. Compiles ~30 libraries from source (x264, x265, aom, dav1d, libass, etc.) 3. Compiles FFmpeg with all libraries linked 4. Copies only runtime artifacts (ffmpeg/ffprobe binaries + shared libs) into a clean runtime stage 5. Installs runtime GPU drivers (Intel compute-runtime, Mesa, VAAPI/VDPAU/Vulkan) ## Library Versions All pinned via ENV vars at the top of the Dockerfile. To bump a library version, update the corresponding ENV var and rebuild. ## Build ```bash # Local build (takes 20-30 minutes) docker build -f images/linux/amd64/Dockerfile -t ersatztv-ffmpeg:7.1.1 . ``` ## Deployment - Built image is pushed to Gitea registry as `192.168.1.95:3000/timothy/ersatztv-ffmpeg:7.1.1` - Referenced by ErsatzTV's `docker/Dockerfile` as the `runtime-base` stage - Only amd64 — jazz (192.168.1.99) is x86_64 ## Conventions - Keep all library versions pinned and explicit - Test FFmpeg binary works before pushing: `docker run --rm ersatztv-ffmpeg:7.1.1 -version` - When bumping FFmpeg or library versions, update RELEASE_VERSION in `.gitea/workflows/build.yml`