@@ -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:
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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 .
|
||||
```
|
||||
|
||||
@@ -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 \
|
||||
|
||||
Reference in New Issue
Block a user