From bbef7bb5c40636a2ced83754f2a2eba0e45a1510 Mon Sep 17 00:00:00 2001 From: mofeng-git Date: Mon, 25 Aug 2025 22:39:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DDocker=E5=A4=9A?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E6=9E=84=E5=BB=BA=E4=B8=ADFFmpeg=E5=BA=93?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复arm64-libs.tar.gz条件复制,使用通配符避免文件不存在错误 - 在stage-0中添加arm64架构FFmpeg库的条件复制 - 添加libyuv0依赖包支持 - 确保只在arm64下复制自定义编译的FFmpeg相关库文件 --- build/Dockerfile | 58 +++++++++++++++++++++------------------- build/Dockerfile-stage-0 | 9 ++++++- 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 1cceca87..e98db4cd 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -11,8 +11,8 @@ COPY --from=builder /tmp/ustreamer/ustreamer /tmp/ustreamer/ustreamer-dump /usr/ COPY --from=builder /tmp/wheel/*.whl /tmp/wheel/ COPY --from=builder /tmp/ustreamer/libjanus_ustreamer.so /usr/lib/ustreamer/janus/ COPY --from=builder /usr/lib/janus/transports/* /usr/lib/janus/transports/ -COPY --from=builder /tmp/arm64-libs.tar.gz /tmp/ -RUN if [ ${TARGETARCH} = arm64 ]; then \ +COPY --from=builder /tmp/arm64-libs.tar.gz* /tmp/ +RUN if [ ${TARGETARCH} = arm64 ] && [ -f /tmp/arm64-libs.tar.gz ]; then \ cd / && tar -xzf /tmp/arm64-libs.tar.gz && rm -f /tmp/arm64-libs.tar.gz; \ fi @@ -47,34 +47,36 @@ RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.lis libasound2 \ libdrm2 \ libx264-164 \ + libyuv0 \ nano \ unzip \ - && if [ ${TARGETARCH} != arm64 ]; then \ - apt-get install -y --no-install-recommends \ - libavcodec59 \ - libavformat59 \ - libavutil57 \ - libswscale6 \ - libavfilter8 \ - libavdevice59; \ - fi \ - && if [ ${TARGETARCH} != arm ] && [ ${TARGETARCH} != arm64 ]; then \ - apt-get install -y --no-install-recommends \ - ffmpeg \ - vainfo \ - libva2 \ - libva-drm2 \ - libva-x11-2 \ - mesa-va-drivers \ - mesa-vdpau-drivers \ - intel-media-va-driver \ - i965-va-driver; \ - fi \ - && if [ ${TARGETARCH} = arm ] || [ ${TARGETARCH} = arm64 ]; then \ - apt-get install -y --no-install-recommends \ - v4l-utils \ - libv4l-0; \ - fi \ + && case ${TARGETARCH} in \ + amd64) \ + apt-get install -y --no-install-recommends \ + libavcodec59 libavformat59 libavutil57 \ + libswscale6 libavfilter8 libavdevice59 \ + ffmpeg vainfo \ + libva2 libva-drm2 libva-x11-2 \ + mesa-va-drivers mesa-vdpau-drivers \ + intel-media-va-driver i965-va-driver \ + ;; \ + arm) \ + apt-get install -y --no-install-recommends \ + libavcodec59 libavformat59 libavutil57 \ + libswscale6 libavfilter8 libavdevice59 \ + v4l-utils libv4l-0 \ + ;; \ + arm64) \ + apt-get install -y --no-install-recommends \ + v4l-utils libv4l-0 \ + libstdc++6 \ + libva2 libva-drm2 libva-x11-2 \ + libvdpau1 ocl-icd-libopencl1 \ + ;; \ + *) \ + echo "Unsupported architecture: ${TARGETARCH}" && exit 1 \ + ;; \ + esac \ && cp /tmp/lib/* /lib/*-linux-*/ \ && pip install --no-cache-dir --root-user-action=ignore --disable-pip-version-check /tmp/wheel/*.whl \ && pip install --no-cache-dir --root-user-action=ignore --disable-pip-version-check pyfatfs \ diff --git a/build/Dockerfile-stage-0 b/build/Dockerfile-stage-0 index 7f51837c..b05baca4 100644 --- a/build/Dockerfile-stage-0 +++ b/build/Dockerfile-stage-0 @@ -180,6 +180,7 @@ RUN echo "Building ustreamer with timestamp cache bust" \ && git clone --depth=1 https://github.com/mofeng-git/ustreamer /tmp/ustreamer-${TIMESTAMP} \ && make -j$(nproc) WITH_PYTHON=1 WITH_JANUS=1 WITH_FFMPEG=1 -C /tmp/ustreamer-${TIMESTAMP} \ && /tmp/ustreamer-${TIMESTAMP}/ustreamer -v \ + && /tmp/ustreamer-${TIMESTAMP}/ustreamer-dump -v \ && cp /tmp/ustreamer-${TIMESTAMP}/python/dist/*.whl /tmp/wheel/ \ && mv /tmp/ustreamer-${TIMESTAMP} /tmp/ustreamer @@ -190,4 +191,10 @@ RUN mkdir /tmp/lib \ libevent-*.so.* libjpeg.so.* libyuv.so.* libnice.so.* \ /tmp/lib/ \ && find /usr/lib -name "libsrtp2.so.*" -exec cp {} /tmp/lib/ \; \ - && find /usr/lib -name "libwebsockets.so.*" -exec cp {} /tmp/lib/ \; + && find /usr/lib -name "libwebsockets.so.*" -exec cp {} /tmp/lib/ \; \ + && if [ ${TARGETARCH} = arm64 ]; then \ + find /usr/lib -name "libav*.so.*" -exec cp {} /tmp/lib/ \; \ + && find /usr/lib -name "libsw*.so.*" -exec cp {} /tmp/lib/ \; \ + && find /usr/lib -name "libpostproc.so.*" -exec cp {} /tmp/lib/ \; \ + && find /usr/lib -name "librga.so.*" -exec cp {} /tmp/lib/ \; ; \ + fi