Some checks failed
Build FFmpeg Image / Build amd64 image (push) Has been cancelled
Remove arm32v7 and arm64 Dockerfiles (only need amd64 for jazz). Replace GitHub Actions multi-platform workflow with Gitea Actions workflow targeting Gitea container registry. Add CLAUDE.md project docs and update README for fork context. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
ErsatzTV FFmpeg
Custom FFmpeg Docker image used as the base for ErsatzTV containers. Forked from 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:
- Installs build deps + Intel GPU SDK + CUDA toolkit
- Compiles ~30 libraries from source (x264, x265, aom, dav1d, libass, etc.)
- Compiles FFmpeg with all libraries linked
- Copies only runtime artifacts (ffmpeg/ffprobe binaries + shared libs) into a clean runtime stage
- 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
# 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/Dockerfileas theruntime-basestage - 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