mirror of
https://github.com/datarhei/ffmpeg
synced 2025-12-24 13:08:07 +08:00
130 lines
2.8 KiB
Docker
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"]
|