Переглянути джерело

Correction ffmpeg pour dernière version Sunshine

penta 4 тижнів тому
батько
коміт
382b006c1f
1 змінених файлів з 135 додано та 7 видалено
  1. 135 7
      Dockerfile

+ 135 - 7
Dockerfile

@@ -4,19 +4,147 @@
 # Versions
 # =============================================================================
 
-ARG SUNSHINE_VERSION=v2025.924.154138
-
 # Update these values whenever the NVIDIA GPU Operator driver changes.
 ARG NVIDIA_DRIVER_BRANCH=580
 ARG NVIDIA_DRIVER_VERSION=580.126.20
 ARG NVIDIA_DRIVER_PACKAGE_VERSION=580.126.20-1ubuntu1
 
+ARG SUNSHINE_REF=0784774
+ARG BUILD_DEPS_VERSION=v2026.724.203728
+ARG NV_CODEC_HEADERS_VERSION=n13.0.19.1
 
-# =============================================================================
-# Sunshine package source
-# =============================================================================
+# ============================================================================
+# Build du FFmpeg utilisé par Sunshine
+# nv-codec-headers volontairement limité à NVENC API 13.0
+# ============================================================================
+FROM docker.io/library/ubuntu:24.04 AS ffmpeg-build
+
+ARG BUILD_DEPS_VERSION
+ARG NV_CODEC_HEADERS_VERSION
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update && \
+    apt-get install -y --no-install-recommends \
+        autoconf \
+        automake \
+        build-essential \
+        ca-certificates \
+        cmake \
+        git \
+        libass-dev \
+        libfreetype6-dev \
+        libgnutls28-dev \
+        libmp3lame-dev \
+        libnuma-dev \
+        libopus-dev \
+        libsdl2-dev \
+        libtool \
+        libvorbis-dev \
+        libxcb1-dev \
+        libxcb-shm0-dev \
+        libxcb-xfixes0-dev \
+        make \
+        meson \
+        nasm \
+        ninja-build \
+        pkg-config \
+        texinfo \
+        wget \
+        zlib1g-dev && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN git clone \
+        --branch "${BUILD_DEPS_VERSION}" \
+        --depth 1 \
+        --recurse-submodules \
+        https://github.com/LizardByte/build-deps.git \
+        /src/build-deps
+
+# Le point important :
+# on remplace les nv-codec-headers utilisés pour compiler FFmpeg
+# par la dernière release API 13.0.
+RUN rm -rf /src/build-deps/third-party/FFmpeg/nv-codec-headers && \
+    git clone \
+        --branch "${NV_CODEC_HEADERS_VERSION}" \
+        --depth 1 \
+        https://github.com/FFmpeg/nv-codec-headers.git \
+        /src/build-deps/third-party/FFmpeg/nv-codec-headers
+
+RUN cmake \
+        -S /src/build-deps \
+        -B /src/build-deps/build \
+        -G "Unix Makefiles" \
+        -DCMAKE_BUILD_TYPE=Release \
+        -DCMAKE_INSTALL_PREFIX=/opt/build-deps \
+        -DBUILD_ALL=OFF \
+        -DBUILD_FFMPEG=ON \
+        -DBUILD_FFMPEG_NV_CODEC_HEADERS=ON \
+        -DBUILD_FFMPEG_CUDA_LLVM=OFF && \
+    cmake --build /src/build-deps/build --parallel "$(nproc)" && \
+    cmake --install /src/build-deps/build
+
+
+# ============================================================================
+# Build de Sunshine avec notre FFmpeg
+# ============================================================================
+FROM docker.io/library/ubuntu:24.04 AS sunshine-build
+
+ARG SUNSHINE_REF
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update && \
+    apt-get install -y --no-install-recommends \
+        ca-certificates \
+        git && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN git clone \
+        --filter=blob:none \
+        https://github.com/LizardByte/Sunshine.git \
+        /src/sunshine && \
+    cd /src/sunshine && \
+    git checkout "${SUNSHINE_REF}" && \
+    git submodule update --init --recursive --depth 1
+
+# Installation des dépendances de compilation de Sunshine.
+# --skip-cuda désactive NVFBC/CUDA dans Sunshine, PAS NVENC via FFmpeg.
+RUN cd /src/sunshine && \
+    ./scripts/linux_build.sh \
+        --sudo-off \
+        --skip-cuda \
+        --step=deps
+
+# Remplacement du FFmpeg précompilé de LizardByte par le nôtre.
+COPY --from=ffmpeg-build /opt/build-deps/ffmpeg /tmp/custom-ffmpeg
+
+RUN rm -rf \
+        /src/sunshine/third-party/build-deps/ffmpeg/Linux-x86_64 && \
+    mkdir -p \
+        /src/sunshine/third-party/build-deps/ffmpeg/Linux-x86_64 && \
+    cp -a \
+        /tmp/custom-ffmpeg/. \
+        /src/sunshine/third-party/build-deps/ffmpeg/Linux-x86_64/
+
+# Configuration + compilation + création du .deb
+RUN cd /src/sunshine && \
+    ./scripts/linux_build.sh \
+        --sudo-off \
+        --skip-cuda \
+        --step=cmake && \
+    ./scripts/linux_build.sh \
+        --sudo-off \
+        --skip-cuda \
+        --step=build && \
+    ./scripts/linux_build.sh \
+        --sudo-off \
+        --skip-cuda \
+        --step=package && \
+    SUNSHINE_DEB="$(find build -maxdepth 1 -type f -name '*.deb' | head -n 1)" && \
+    test -n "${SUNSHINE_DEB}" && \
+    cp "${SUNSHINE_DEB}" /sunshine.deb
 
-FROM ghcr.io/lizardbyte/sunshine:${SUNSHINE_VERSION}-ubuntu-24.04 AS sunshine
 
 
 # =============================================================================
@@ -287,7 +415,7 @@ EOF
 # Sunshine
 # =============================================================================
 
-COPY --from=sunshine /sunshine.deb /tmp/sunshine.deb
+COPY --from=sunshine-build /sunshine.deb /tmp/sunshine.deb
 
 RUN apt-get update \
     && apt-get install --no-install-recommends -y \