fix: 修复Docker多架构构建中FFmpeg库依赖问题

- 修复arm64-libs.tar.gz条件复制,使用通配符避免文件不存在错误
- 在stage-0中添加arm64架构FFmpeg库的条件复制
- 添加libyuv0依赖包支持
- 确保只在arm64下复制自定义编译的FFmpeg相关库文件
This commit is contained in:
mofeng-git 2025-08-25 22:39:27 +08:00
parent b94cc14e2a
commit bbef7bb5c4
2 changed files with 38 additions and 29 deletions

View File

@ -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 \

View File

@ -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