Files
ffmpeg_build/Dockerfile.alpine.vaapi
2022-05-12 21:51:49 +02:00

172 lines
4.1 KiB
Docker

ARG ALPINE_IMAGE=alpine:3.15
FROM $ALPINE_IMAGE as builder
ARG LIBAV_VERSION=2.14.0-r0
ARG LIBVDPAU_VERSION=1.5-r0
ARG MESA_VA_GALLIUM_VERSION=21.3.8-r1
ARG MESA_VDPAU_GALLIUM_VERSION=21.3.8-r1
ARG LIBVA_VDPAU_DRIVER_VERSION=0.7.4-r2
ARG INTEL_GMMLIB_VERSION=22.1.2-r0
ARG INTEL_MEDIA_DRIVER_VERSION=22.4.1-r0
ARG INTEL_MEDIA_SDK_VERSION=22.4.1-r0
ARG INTEL_VAAPI_DRIVER=2.4.1-r0
ARG FREETYPE_VERSION=2.11.1-r1
ARG SRT_VERSION=1.4.2-r1
ARG X264_VERSION=20210613-r0
ARG X265_VERSION=3.5-r0
ARG VPX_VERSION=1.10.0-r0
ARG LAME_VERSION=3.100-r0
ARG OPUS_VERSION=1.3.1-r1
ARG VORBIS_VERSION=1.3.7-r0
ARG FFMPEG_VERSION=4.4.1
ENV PKG_CONFIG_PATH=/usr/lib/pkgconfig \
SRC=/usr
# install build packages
RUN apk add --update \
autoconf \
automake \
bash \
binutils \
bzip2 \
ca-certificates \
cmake \
coreutils \
curl \
diffutils \
g++ \
gcc \
libgcc \
libssl1.1 \
libtool \
linux-headers \
make \
musl-dev \
nasm \
openssl-dev \
patch \
tar \
zlib-dev
# install shared ffmpeg libs
RUN apk add -U \
freetype-dev=${FREETYPE_VERSION} \
libsrt-dev=${SRT_VERSION} \
x264-dev=${X264_VERSION} \
x265-dev=${X265_VERSION} \
libvpx-dev=${VPX_VERSION} \
lame-dev=${LAME_VERSION} \
opus-dev=${OPUS_VERSION} \
libvorbis-dev=${VORBIS_VERSION}
# install shared ffmpeg libs
RUN echo http://dl-2.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories
RUN apk add -U \
libva-dev=${LIBAV_VERSION} \
libvdpau-dev=${LIBVDPAU_VERSION} \
libva-intel-driver=${INTEL_VAAPI_DRIVER} \
mesa-va-gallium=${MESA_VA_GALLIUM_VERSION} \
mesa-vdpau-gallium=${MESA_VDPAU_GALLIUM_VERSION}
# install shared ffmpeg libs
RUN echo http://dl-2.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories
RUN apk add -U \
intel-gmmlib-dev=${INTEL_GMMLIB_VERSION} \
intel-media-driver-dev=${INTEL_MEDIA_DRIVER_VERSION} \
intel-media-sdk-dev=${INTEL_MEDIA_SDK_VERSION}
# install shared ffmpeg libs
RUN echo http://dl-2.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories
RUN apk add -U \
libva-vdpau-driver=${LIBVA_VDPAU_DRIVER_VERSION}
# 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 cd /dist/ffmpeg-${FFMPEG_VERSION} && \
patch -p1 < /contrib/ffmpeg-jsonstats.patch && \
./configure \
--extra-version=datarhei \
--prefix="${SRC}" \
--extra-libs="-lpthread -lm -lz -lsupc++ -lstdc++ -lssl -lcrypto -lz -lc -ldl" \
--enable-nonfree \
--enable-gpl \
--enable-version3 \
--enable-static \
--enable-openssl \
--enable-libfreetype \
--enable-libsrt \
--enable-libx264 \
--enable-libx265 \
--enable-libvpx \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libmfx \
--enable-vaapi \
--enable-vdpau \
--disable-ffplay \
--disable-debug \
--disable-doc \
--disable-shared && \
make -j$(nproc) && \
make install
# export shared ffmpeg libs
RUN mkdir -p /ffmpeg/lib && \
cp \
/usr/lib/libfreetype.so.6 \
/usr/lib/libbrotlidec.so.1 \
/usr/lib/libbrotlicommon.so.1 \
/usr/lib/libbz2.so.1 \
/usr/lib/libpng16.so.16 \
/usr/lib/libsrt.so.1 \
/usr/lib/libx264.so.163 \
/usr/lib/libx265.so.199 \
/usr/lib/libvpx.so.6 \
/usr/lib/libmp3lame.so.0 \
/usr/lib/libopus.so.0 \
/usr/lib/libvorbis.so.0 \
/usr/lib/libogg.so.0 \
/usr/lib/libvorbisenc.so.2 \
/usr/lib/libgcc_s.so.1 \
/usr/lib/libstdc++.so.6 \
/usr/lib/libxcb.so.1 \
/usr/lib/libXau.so.6 \
/usr/lib/libXdmcp.so.6 \
/usr/lib/libbsd.so.0 \
/usr/lib/libmd.so.0 \
/usr/lib/libxcb-shm.so.0 \
/usr/lib/libxcb-shape.so.0 \
/usr/lib/libxcb-xfixes.so.0 \
/usr/lib/libva.so.2 \
/usr/lib/libmfx.so.1 \
/usr/lib/libva-drm.so.2 \
/usr/lib/libdrm.so.2 \
/usr/lib/libvdpau.so.1 \
/usr/lib/libXext.so.6 \
/usr/lib/libX11.so.6 \
/ffmpeg/lib
FROM $ALPINE_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 && \
ffmpeg -buildconf
WORKDIR /tmp
ENTRYPOINT ["/usr/bin/ffmpeg"]
CMD ["-version"]