Files
ffmpeg_build/Dockerfile.alpine.rpi
2024-11-08 17:22:42 +01:00

130 lines
2.8 KiB
Docker

ARG BUILD_IMAGE=alpine:3.15
FROM $BUILD_IMAGE AS builder
ARG BUILD_DATE=1970-01-01T00:00:00Z
ARG BUILD_COMMIT=unknown
ARG FFMPEG_VERSION=none
ENV PKG_CONFIG_PATH=/usr/lib/pkgconfig \
SRC=/usr
# install build packages
RUN apk add -U \
autoconf \
automake \
bash \
binutils \
bzip2 \
ca-certificates \
cmake \
coreutils \
curl \
diffutils \
g++ \
gcc \
libgcc \
libssl3 \
libtool \
linux-headers \
make \
musl-dev \
nasm \
openssl-dev \
patch \
tar \
zlib-dev \
harfbuzz-dev \
freetype-dev \
libxml2-dev \
libsrt-dev \
x264-dev \
x265-dev \
libvpx-dev \
lame-dev \
opus-dev \
libvorbis-dev \
fdk-aac-dev \
dav1d-dev \
rav1e-dev \
aom-dev \
alsa-lib-dev \
v4l-utils-dev \
libxcb-dev \
raspberrypi-dev \
raspberrypi-libs
# install and patch ffmpeg
RUN mkdir -p /dist && cd /dist && \
curl -OLk http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \
tar -xvz -f ffmpeg-${FFMPEG_VERSION}.tar.gz && \
rm ffmpeg-${FFMPEG_VERSION}.tar.gz
COPY ./contrib /contrib
RUN echo $uname
RUN cd /dist/ffmpeg-${FFMPEG_VERSION} && \
apkArch="$(apk --print-arch)" && if [ $apkArch != "aarch64" ]; then MMAL_SUPPORT="--enable-mmal"; fi && \
apkArch="$(apk --print-arch)" && if [ $apkArch != "aarch64" ]; then OMX_SUPPORT="--enable-omx --enable-omx-rpi"; fi && \
patch -p1 < /contrib/ffmpeg-jsonstats.patch && \
patch -p1 < /contrib/ffmpeg-hls.patch && \
./configure \
--extra-version="datarhei-${BUILD_COMMIT}-${BUILD_DATE}" \
--prefix="${SRC}" \
--extra-libs="-lpthread -lxml2 -lm -lsupc++ -lstdc++ -lssl -lcrypto -lz -lc -ldl" \
--enable-nonfree \
--enable-gpl \
--enable-version3 \
--enable-postproc \
--enable-static \
--enable-openssl \
--enable-libxml2 \
$OMX_SUPPORT \
$MMAL_SUPPORT \
--enable-libv4l2 \
--enable-v4l2_m2m \
--enable-alsa \
--enable-libfreetype \
--enable-libsrt \
--enable-libx264 \
--enable-libx265 \
--enable-libvpx \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libfdk-aac \
--enable-libdav1d \
--enable-librav1e \
--enable-libaom \
--enable-libxcb \
--disable-ffplay \
--disable-debug \
--disable-doc \
--disable-shared && \
make -j$(nproc) && \
make install
# export shared ffmpeg libs
RUN mkdir -p /ffmpeg/lib && \
ldd /usr/bin/ffmpeg | grep -o -e '/usr/lib/[^ ]*' | xargs -I % cp -v % /ffmpeg/lib
FROM $BUILD_IMAGE AS final
COPY --from=builder /usr/bin/ffmpeg /usr/bin/ffmpeg
COPY --from=builder /ffmpeg/lib/* /usr/lib/
RUN apk add --no-cache \
ca-certificates \
tzdata \
alsa-lib \
xf86-video-fbdev \
v4l-utils \
raspberrypi-userland && \
echo "/opt/vc/lib:/usr/local/lib:/usr/lib:/lib" > /etc/ld-musl-armhf.path && \
ffmpeg -buildconf
WORKDIR /tmp
ENTRYPOINT ["/usr/bin/ffmpeg"]
CMD ["-version"]