Mod switches to ubuntu

This commit is contained in:
Jan Stabenow
2022-11-09 16:03:29 +01:00
parent 32abcdb3c7
commit 44f0d248b0
5 changed files with 239 additions and 226 deletions

View File

@@ -15,14 +15,14 @@ jobs:
- uses: cardinalby/export-env-action@v1
with:
envFile: 'Build.alpine.env'
envFile: 'Build.ubuntu.env'
export: 'true'
expandWithJobEnv: 'true'
expand: 'true'
- uses: cardinalby/export-env-action@v1
with:
envFile: 'Build.alpine.vaapi.env'
envFile: 'Build.ubuntu.vaapi.env'
export: 'true'
expandWithJobEnv: 'true'
expand: 'true'
@@ -56,9 +56,10 @@ jobs:
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile.alpine.vaapi
file: ./Dockerfile.ubuntu.vaapi
build-args: |
BUILD_IMAGE=${{ env.OS_NAME }}:${{ env.OS_VERSION }}
DEPLOY_IMAGE=${{ env.OS_NAME }}:${{ env.OS_VERSION }}
FREETYPE_VERSION=${{ env.FREETYPE_VERSION }}
XML2_VERSION=${{ env.XML2_VERSION }}
SRT_VERSION=${{ env.SRT_VERSION }}
@@ -69,16 +70,6 @@ jobs:
OPUS_VERSION=${{ env.OPUS_VERSION }}
VORBIS_VERSION=${{ env.VORBIS_VERSION }}
FFMPEG_VERSION=${{ env.FFMPEG_VERSION }}
LIBAV_VERSION=${{ env.LIBAV_VERSION }}
LIBVDPAU_VERSION=${{ env.LIBVDPAU_VERSION }}
MESA_VA_GALLIUM_VERSION=${{ env.MESA_VA_GALLIUM_VERSION }}
MESA_VDPAU_GALLIUM_VERSION=${{ env.MESA_VDPAU_GALLIUM_VERSION }}
LIBVA_VDPAU_DRIVER_VERSION=${{ env.LIBVA_VDPAU_DRIVER_VERSION }}
INTEL_GMMLIB_VERSION=${{ env.INTEL_GMMLIB_VERSION }}
INTEL_MEDIA_DRIVER_VERSION=${{ env.INTEL_MEDIA_DRIVER_VERSION }}
INTEL_MEDIA_SDK_VERSION=${{ env.INTEL_MEDIA_SDK_VERSION }}
INTEL_VAAPI_DRIVER=${{ env.INTEL_VAAPI_DRIVER }}
platforms: linux/amd64
push: true
tags: |

View File

@@ -1,10 +0,0 @@
# FFMPEG VAAPI PACKAGES
LIBAV_VERSION=2.14.0-r0
LIBVDPAU_VERSION=1.5-r0
MESA_VA_GALLIUM_VERSION=22.2.2-r2
MESA_VDPAU_GALLIUM_VERSION=22.2.2-r2
LIBVA_VDPAU_DRIVER_VERSION=0.7.4-r2
INTEL_GMMLIB_VERSION=22.1.3-r0
INTEL_MEDIA_DRIVER_VERSION=22.6.1-r0
INTEL_MEDIA_SDK_VERSION=22.5.4-r0
INTEL_VAAPI_DRIVER=2.4.1-r0

1
Build.ubuntu.vaapi.env Normal file
View File

@@ -0,0 +1 @@
# FFMPEG VAAPI PACKAGES

View File

@@ -1,203 +0,0 @@
ARG BUILD_IMAGE=alpine:3.15
FROM $BUILD_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.3-r0
ARG INTEL_MEDIA_DRIVER_VERSION=22.4.2-r0
ARG INTEL_MEDIA_SDK_VERSION=22.4.2-r0
ARG INTEL_VAAPI_DRIVER=2.4.1-r0
ARG FREETYPE_VERSION=2.11.1-r2
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 FBDEV_VERSION=0.5.0-r3
ARG V4L_VERSION=1.22.1-r1
ARG FFMPEG_VERSION=4.4.2
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} \
v4l-utils-dev=${V4L_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 && \
patch -p1 < /contrib/ffmpeg-hlsbitrate.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-libv4l2 \
--enable-v4l2_m2m \
--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.4 \
/usr/lib/libx264.so.163 \
/usr/lib/libx265.so.199 \
/usr/lib/libnuma.so.1 \
/usr/lib/libvpx.so.7 \
/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 \
/usr/lib/libva-x11.so.2 \
/ffmpeg/lib
FROM $BUILD_IMAGE as final
COPY --from=builder /usr/bin/ffmpeg /usr/bin/ffmpeg
COPY --from=builder /ffmpeg/lib/* /usr/lib/
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_MEDIA_DRIVER_VERSION=22.4.2-r0
ARG INTEL_VAAPI_DRIVER=2.4.1-r0
ARG FBDEV_VERSION=0.5.0-r3
ARG V4L_VERSION=1.22.1-r1
# install shared ffmpeg libs
RUN apk add --no-cache -U \
ca-certificates \
tzdata \
xf86-video-fbdev=${FBDEV_VERSION} \
v4l-utils=${V4L_VERSION} && \
echo http://dl-2.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories && \
apk add --no-cache -U \
libva-intel-driver=${INTEL_VAAPI_DRIVER} \
mesa-va-gallium=${MESA_VA_GALLIUM_VERSION} \
mesa-vdpau-gallium=${MESA_VDPAU_GALLIUM_VERSION} && \
echo http://dl-2.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \
apk add --no-cache -U \
intel-media-driver=${INTEL_MEDIA_DRIVER_VERSION} && \
echo http://dl-2.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories && \
apk add --no-cache -U \
libva-vdpau-driver=${LIBVA_VDPAU_DRIVER_VERSION} && \
ffmpeg -buildconf
WORKDIR /tmp
ENTRYPOINT ["/usr/bin/ffmpeg"]
CMD ["-version"]

234
Dockerfile.ubuntu.vaapi Normal file
View File

@@ -0,0 +1,234 @@
ARG BUILD_IMAGE=ubuntu:20.04
ARG DEPLOY_IMAGE=ubuntu:20.04
FROM $BUILD_IMAGE as builder
ARG FREETYPE_VERSION=2.10.4
ENV XML2_VERSION=2.9.14
ARG SRT_VERSION=1.4.2
ARG X264_VERSION=stable
ARG X265_VERSION=3.4
ENV VPX_VERSION=1.11.0
ARG LAME_VERSION=3.100
ARG OPUS_VERSION=1.3.1
ENV OGG_VERSION=1.3.5
ARG VORBIS_VERSION=1.3.7
ARG FFMPEG_VERSION=4.4.2
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
ENV SRC=/usr/local
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y && \
apt-get install -y \
pkg-config \
curl \
git \
nasm \
openssl \
libssl-dev \
cmake \
yasm \
build-essential \
libtool \
autoconf \
libv4l-dev \
libva-drm2 \
libva2 \
i965-va-driver
# install x264
RUN mkdir -p /dist && cd /dist && \
curl -OLk https://code.videolan.org/videolan/x264/-/archive/stable/x264-${X264_VERSION}.tar.gz && \
tar xfvz x264-${X264_VERSION}.tar.gz && \
rm x264-${X264_VERSION}.tar.gz && \
cd x264-${X264_VERSION}* && \
./configure \
--SRC="${SRC}" \
--bindir="${SRC}/bin" \
--enable-shared && \
make -j$(nproc) && \
make install
# install x265
RUN mkdir -p /dist && cd /dist && \
curl -OLk https://github.com/videolan/x265/archive/refs/tags/${X265_VERSION}.tar.gz && \
tar xfvz ${X265_VERSION}.tar.gz && \
rm ${X265_VERSION}.tar.gz && \
cd x265-${X265_VERSION}/build/linux \
sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_SRC=\${SRC}/" multilib.sh && \
sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \
./multilib.sh && \
make -C 8bit install && \
rm -rf ${DIR}
# install opus
RUN mkdir -p /dist && cd /dist && \
curl -OLk https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz && \
tar xfvz opus-${OPUS_VERSION}.tar.gz && \
rm opus-${OPUS_VERSION}.tar.gz && \
cd opus-${OPUS_VERSION} && \
autoreconf -fiv && \
./configure --prefix="${SRC}" \
--enable-shared && \
make && \
make install
# install ogg
RUN mkdir -p /dist && cd /dist && \
curl -OLk http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz && \
tar xfvz libogg-${OGG_VERSION}.tar.gz && \
rm libogg-${OGG_VERSION}.tar.gz && \
cd libogg-${OGG_VERSION} && \
./configure --prefix="${SRC}" \
--enable-shared && \
make && \
make install
# install vorbis
RUN mkdir -p /dist && cd /dist && \
curl -OLk http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz && \
tar xfvz libvorbis-${VORBIS_VERSION}.tar.gz && \
rm libvorbis-${VORBIS_VERSION}.tar.gz && \
cd libvorbis-${VORBIS_VERSION} && \
./configure --prefix="${SRC}" --with-ogg="${SRC}" \
--enable-shared && \
make && \
make install
# install libmp3lame
RUN mkdir -p /dist && cd /dist && \
curl -OLk https://downloads.sourceforge.net/project/lame/lame/${LAME_VERSION}/lame-${LAME_VERSION}.tar.gz && \
tar -xvz -f lame-${LAME_VERSION}.tar.gz && \
rm lame-${LAME_VERSION}.tar.gz && \
cd lame-${LAME_VERSION} && \
./configure \
--prefix="${SRC}" \
--bindir="${SRC}/bin" \
--disable-static \
--enable-nasm && \
make -j$(nproc) && \
make install
# install vpx
RUN mkdir -p /dist && cd /dist && \
curl -OLk https://github.com/webmproject/libvpx/archive/refs/tags/v${VPX_VERSION}.tar.gz && \
tar xfvz v${VPX_VERSION}.tar.gz && \
rm v${VPX_VERSION}.tar.gz && \
cd libvpx-${VPX_VERSION} && \
./configure --prefix="${SRC}" \
--enable-vp8 \
--enable-vp9 \
--enable-vp9-highbitdepth \
--enable-pic \
--enable-shared \
--disable-debug \
--disable-examples \
--disable-docs \
--disable-install-bins && \
make && \
make install
# install freetype
RUN mkdir -p /dist && cd /dist && \
curl -OLk https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \
tar xfvz freetype-${FREETYPE_VERSION}.tar.gz && \
rm freetype-${FREETYPE_VERSION}.tar.gz && \
cd freetype-${FREETYPE_VERSION} && \
./configure --prefix="${SRC}" \
--disable-static \
--enable-shared && \
make && \
make install
# install srt
RUN mkdir -p /dist && cd /dist && \
curl -OLk https://github.com/Haivision/srt/archive/refs/tags/v${SRT_VERSION}.tar.gz && \
tar xfvz v${SRT_VERSION}.tar.gz && \
rm v${SRT_VERSION}.tar.gz && \
cd srt-${SRT_VERSION} && \
cmake \
-G "Unix Makefiles" \
-DCMAKE_INSTALL_BINDIR="$SRC/bin" \
-DCMAKE_INSTALL_INCLUDEDIR="$SRC/include" \
-DCMAKE_INSTALL_LIBDIR="$SRC/lib" \
-DCMAKE_INSTALL_SRC="$SRC" && \
make && \
make install
# install libxml2
RUN mkdir -p /dist && cd /dist && \
curl -OLk https://github.com/GNOME/libxml2/archive/refs/tags/v${XML2_VERSION}.tar.gz && \
tar xfvz v${XML2_VERSION}.tar.gz && \
rm v${XML2_VERSION}.tar.gz && \
cd libxml2-${XML2_VERSION} && \
./autogen.sh --prefix="${SRC}" \
--with-ftp=no \
--with-http=no \
--with-python=no && \
make && \
make install
# 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 apt-get install -y libva-dev
RUN cd /dist/ffmpeg-${FFMPEG_VERSION} && \
patch -p1 < /contrib/ffmpeg-jsonstats.patch && \
patch -p1 < /contrib/ffmpeg-hlsbitrate.patch && \
./configure \
--extra-version=datahrei \
--prefix="${SRC}" \
--enable-nonfree \
--enable-gpl \
--enable-version3 \
--enable-postproc \
--enable-static \
--enable-openssl \
--enable-libxml2 \
--enable-vaapi \
--enable-libv4l2 \
--enable-libfreetype \
--enable-libsrt \
--enable-libx264 \
--enable-libx265 \
--enable-libvpx \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--disable-ffplay \
--disable-ffprobe \
--disable-debug \
--disable-doc && \
make -j$(nproc) && \
make install && \
hash -r
FROM $DEPLOY_IMAGE
COPY --from=builder /usr/local/bin/ffmpeg /usr/local/bin/ffmpeg
COPY --from=builder /usr/local/lib /usr/local/lib
RUN echo "/usr/local/lib" > /etc/ld.so.conf.d/ffmpeg.conf && \
ldconfig && \
apt-get update && \
apt-get install -y \
v4l-utils \
fbset \
libva-drm2 \
libva2 \
i965-va-driver && \
ffmpeg -buildconf
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,video,utility
WORKDIR /tmp
ENTRYPOINT ["/usr/local/bin/ffmpeg"]
CMD ["-version"]