From 8c390ec4312f9ca8048d00f06654c4f10b2c2f3b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ahmet=20=C3=96ner?= <ahmetn8@gmail.com>
Date: Sun, 16 Feb 2025 22:27:59 +0100
Subject: [PATCH] Simplify FFmpeg installation using pre-built image

---
 Dockerfile     | 45 ++-------------------------------------------
 Dockerfile.gpu | 43 ++-----------------------------------------
 2 files changed, 4 insertions(+), 84 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 08cfa3a..034c4d5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,44 +1,4 @@
-FROM debian:bookworm-slim AS ffmpeg
-
-RUN export DEBIAN_FRONTEND=noninteractive \
-    && apt-get -qq update \
-    && apt-get -qq install --no-install-recommends \
-    build-essential \
-    git \
-    pkg-config \
-    yasm \
-    ca-certificates \
-    gcc \
-    python3-dev \
-    && rm -rf /var/lib/apt/lists/*
-
-RUN git clone https://github.com/FFmpeg/FFmpeg.git --depth 1 --branch n6.1.1 --single-branch /FFmpeg-6.1.1
-
-WORKDIR /FFmpeg-6.1.1
-
-RUN PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
-      --prefix="$HOME/ffmpeg_build" \
-      --pkg-config-flags="--static" \
-      --extra-cflags="-I$HOME/ffmpeg_build/include" \
-      --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
-      --extra-libs="-lpthread -lm" \
-      --ld="g++" \
-      --bindir="$HOME/bin" \
-      --disable-doc \
-      --disable-htmlpages \
-      --disable-podpages \
-      --disable-txtpages \
-      --disable-network \
-      --disable-autodetect \
-      --disable-hwaccels \
-      --disable-ffprobe \
-      --disable-ffplay \
-      --enable-filter=copy \
-      --enable-protocol=file \
-      --enable-small && \
-    PATH="$HOME/bin:$PATH" make -j$(nproc) && \
-    make install && \
-    hash -r
+FROM onerahmet/ffmpeg:n7.1 AS ffmpeg
 
 FROM swaggerapi/swagger-ui:v5.9.1 AS swagger-ui
 
@@ -61,8 +21,7 @@ ENV PATH="${PATH}:${POETRY_VENV}/bin"
 WORKDIR /app
 
 COPY . /app
-COPY --from=ffmpeg /FFmpeg-6.1.1 /FFmpeg-6.1.1
-COPY --from=ffmpeg /root/bin/ffmpeg /usr/local/bin/ffmpeg
+COPY --from=ffmpeg /usr/local/bin/ffmpeg /usr/local/bin/ffmpeg
 COPY --from=swagger-ui /usr/share/nginx/html/swagger-ui.css swagger-ui-assets/swagger-ui.css
 COPY --from=swagger-ui /usr/share/nginx/html/swagger-ui-bundle.js swagger-ui-assets/swagger-ui-bundle.js
 
diff --git a/Dockerfile.gpu b/Dockerfile.gpu
index 709681f..1bb5bd1 100644
--- a/Dockerfile.gpu
+++ b/Dockerfile.gpu
@@ -1,42 +1,4 @@
-FROM debian:bookworm-slim AS ffmpeg
-
-RUN export DEBIAN_FRONTEND=noninteractive \
-    && apt-get -qq update \
-    && apt-get -qq install --no-install-recommends \
-    build-essential \
-    git \
-    pkg-config \
-    yasm \
-    ca-certificates \
-    && rm -rf /var/lib/apt/lists/*
-
-RUN git clone https://github.com/FFmpeg/FFmpeg.git --depth 1 --branch n6.1.1 --single-branch /FFmpeg-6.1.1
-
-WORKDIR /FFmpeg-6.1.1
-
-RUN PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
-      --prefix="$HOME/ffmpeg_build" \
-      --pkg-config-flags="--static" \
-      --extra-cflags="-I$HOME/ffmpeg_build/include" \
-      --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
-      --extra-libs="-lpthread -lm" \
-      --ld="g++" \
-      --bindir="$HOME/bin" \
-      --disable-doc \
-      --disable-htmlpages \
-      --disable-podpages \
-      --disable-txtpages \
-      --disable-network \
-      --disable-autodetect \
-      --disable-hwaccels \
-      --disable-ffprobe \
-      --disable-ffplay \
-      --enable-filter=copy \
-      --enable-protocol=file \
-      --enable-small && \
-    PATH="$HOME/bin:$PATH" make -j$(nproc) && \
-    make install && \
-    hash -r
+FROM onerahmet/ffmpeg:n7.1 AS ffmpeg
 
 FROM swaggerapi/swagger-ui:v5.9.1 AS swagger-ui
 
@@ -78,8 +40,7 @@ RUN poetry config virtualenvs.in-project true
 RUN poetry install --no-root
 
 COPY . .
-COPY --from=ffmpeg /FFmpeg-6.1.1 /FFmpeg-6.1.1
-COPY --from=ffmpeg /root/bin/ffmpeg /usr/local/bin/ffmpeg
+COPY --from=ffmpeg /usr/local/bin/ffmpeg /usr/local/bin/ffmpeg
 COPY --from=swagger-ui /usr/share/nginx/html/swagger-ui.css swagger-ui-assets/swagger-ui.css
 COPY --from=swagger-ui /usr/share/nginx/html/swagger-ui-bundle.js swagger-ui-assets/swagger-ui-bundle.js
 
-- 
GitLab