diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 55e7be0..fd7e64b 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -9,7 +9,7 @@ on: env: REGISTRY: 192.168.1.95:3000 IMAGE_NAME: timothy/ersatztv-ffmpeg - RELEASE_VERSION: 7.1.1 + RELEASE_VERSION: 8.1.2 jobs: build: diff --git a/CLAUDE.md b/CLAUDE.md index 40af9b7..ad62fd5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -11,7 +11,7 @@ images/linux/amd64/Dockerfile # The main (and only) Dockerfile ## How It Works -Single-stage compile of FFmpeg 7.1.1 from source on Ubuntu Noble (`ghcr.io/linuxserver/baseimage-ubuntu:noble`). The Dockerfile: +Single-stage compile of FFmpeg 8.1.2 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.) @@ -27,17 +27,17 @@ All pinned via ENV vars at the top of the Dockerfile. To bump a library version, ```bash # Local build (takes 20-30 minutes) -docker build -f images/linux/amd64/Dockerfile -t ersatztv-ffmpeg:7.1.1 . +docker build -f images/linux/amd64/Dockerfile -t ersatztv-ffmpeg:8.1.2 . ``` ## Deployment -- Built image is pushed to Gitea registry as `192.168.1.95:3000/timothy/ersatztv-ffmpeg:7.1.1` +- Built image is pushed to Gitea registry as `192.168.1.95:3000/timothy/ersatztv-ffmpeg:8.1.2` - Referenced by ErsatzTV's `docker/Dockerfile` as the `runtime-base` stage -- Only amd64 — jazz (192.168.1.99) is x86_64 +- Only amd64 — bumblebee (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` +- Test FFmpeg binary works before pushing: `docker run --rm ersatztv-ffmpeg:8.1.2 -version` - When bumping FFmpeg or library versions, update RELEASE_VERSION in `.gitea/workflows/build.yml` diff --git a/README.md b/README.md index 59cec33..f5365ca 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Built for amd64 only. Images are modified versions of those found at [jrottenber ## What's included -FFmpeg 7.1.1 compiled from source with: +FFmpeg 8.1.2 compiled from source with: - **NVIDIA**: CUDA 11.4, NVENC/NVDEC/CUVID - **Intel QSV**: oneVPL, iHD driver 25.1.4 - **VAAPI/VDPAU/Vulkan**: full hardware acceleration stack @@ -17,5 +17,5 @@ FFmpeg 7.1.1 compiled from source with: ## Build ```bash -docker build -f images/linux/amd64/Dockerfile -t ersatztv-ffmpeg:7.1.1 . +docker build -f images/linux/amd64/Dockerfile -t ersatztv-ffmpeg:8.1.2 . ``` diff --git a/images/linux/amd64/Dockerfile b/images/linux/amd64/Dockerfile index b31b0c0..423e997 100644 --- a/images/linux/amd64/Dockerfile +++ b/images/linux/amd64/Dockerfile @@ -8,8 +8,10 @@ ENV MAKEFLAGS="-j4" \ PATH="/root/.cargo/bin:${PATH}" ENV AOM=v3.12.0 \ + CARGOC=0.10.23+cargo-0.97.1 \ + CBINDGEN=0.29.4 \ FDKAAC=2.0.3 \ - FFMPEG_HARD=7.1.1 \ + FFMPEG_HARD=8.1.2 \ FONTCONFIG=2.16.0 \ FREETYPE=2.13.3 \ FRIBIDI=1.0.16 \ @@ -32,6 +34,7 @@ ENV AOM=v3.12.0 \ OPENCOREAMR=0.1.6 \ OPENJPEG=2.5.3 \ OPUS=1.5.2 \ + RUST=1.94.0 \ SHADERC=v2025.1 \ THEORA=1.1.1 \ VORBIS=1.3.7 \ @@ -110,12 +113,12 @@ RUN apt-get -yqq update && \ apt-get autoremove -y && \ apt-get clean -y && \ mkdir -p /tmp/rust && \ - RUST_VERSION=$(curl -fsX GET https://api.github.com/repos/rust-lang/rust/releases/latest | jq -r '.tag_name') && \ - curl -fo /tmp/rust.tar.gz -L "https://static.rust-lang.org/dist/rust-${RUST_VERSION}-x86_64-unknown-linux-gnu.tar.gz" && \ + curl -fo /tmp/rust.tar.gz -L "https://static.rust-lang.org/dist/rust-${RUST}-x86_64-unknown-linux-gnu.tar.gz" && \ tar xf /tmp/rust.tar.gz -C /tmp/rust --strip-components=1 && \ cd /tmp/rust && \ ./install.sh && \ - cargo install cargo-c cbindgen --locked && \ + cargo install cargo-c --version ${CARGOC} --locked && \ + cargo install cbindgen --version ${CBINDGEN} --locked && \ python3 -m venv /lsiopy && \ pip install -U --no-cache-dir \ pip \