mirror of
https://github.com/linuxserver/docker-ffmpeg.git
synced 2026-02-20 04:56:23 +08:00
123 lines
3.9 KiB
Docker
123 lines
3.9 KiB
Docker
FROM alpine:3.9 as fetch-stage
|
|
|
|
# environment variables
|
|
ARG SOURCE_FOLDER="/sources"
|
|
ARG TARS_FOLDER="/tmp/tarballs"
|
|
|
|
# versions
|
|
ENV \
|
|
AOM=v1.0.0 \
|
|
FDKAAC=0.1.5 \
|
|
FONTCONFIG=2.13.91 \
|
|
FREETYPE=2.8.1 \
|
|
FRIBIDI=0.19.7 \
|
|
KVAZAAR=1.2.0 \
|
|
LAME=3.99.5 \
|
|
LIBASS=0.14.0 \
|
|
LIBDRM=2.4.98 \
|
|
LIBVA=2.4.1 \
|
|
LIBVDPAU=1.2 \
|
|
LIBVIDSTAB=1.1.0 \
|
|
NVCODEC=n9.0.18.1 \
|
|
OGG=1.3.2 \
|
|
OPENCOREAMR=0.1.5 \
|
|
OPENJPEG=2.3.1 \
|
|
OPUS=1.3 \
|
|
THEORA=1.1.1 \
|
|
VORBIS=1.3.6 \
|
|
VPX=1.8.0 \
|
|
X264=last_stable_x264 \
|
|
X265=3.0 \
|
|
XVID=1.3.4
|
|
|
|
# urls for source codes not using git pull.
|
|
ARG NON_GIT_URL_LIST="\
|
|
https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC}.tar.gz \
|
|
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.bz2 \
|
|
https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE}.tar.gz \
|
|
https://github.com/fribidi/fribidi/archive/${FRIBIDI}.tar.gz \
|
|
https://github.com/ultravideo/kvazaar/archive/v${KVAZAAR}.tar.gz \
|
|
http://downloads.sourceforge.net/project/lame/lame/3.99/lame-${LAME}.tar.gz \
|
|
https://github.com/libass/libass/archive/${LIBASS}.tar.gz \
|
|
https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM}.tar.gz \
|
|
https://github.com/intel/libva/archive/${LIBVA}.tar.gz \
|
|
http://downloads.xiph.org/releases/ogg/libogg-${OGG}.tar.gz \
|
|
http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR}.tar.gz \
|
|
https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG}.tar.gz \
|
|
https://archive.mozilla.org/pub/opus/opus-${OPUS}.tar.gz \
|
|
http://downloads.xiph.org/releases/theora/libtheora-${THEORA}.tar.gz \
|
|
https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB}.tar.gz \
|
|
http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS}.tar.gz \
|
|
https://github.com/webmproject/libvpx/archive/v${VPX}.tar.gz \
|
|
https://download.videolan.org/pub/videolan/x264/snapshots/${X264}.tar.bz2 \
|
|
https://download.videolan.org/pub/videolan/x265/x265_${X265}.tar.gz \
|
|
http://downloads.xvid.org/downloads/xvidcore-${XVID}.tar.gz"
|
|
|
|
|
|
# install fetch packages
|
|
RUN \
|
|
apk add --no-cache \
|
|
bash \
|
|
curl \
|
|
bzip2 \
|
|
git \
|
|
wget \
|
|
xz
|
|
|
|
# set shell
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
|
|
# make folders
|
|
RUN \
|
|
mkdir -p \
|
|
"${SOURCE_FOLDER}" \
|
|
${TARS_FOLDER}
|
|
|
|
RUN \
|
|
echo "\n**** fetch git based source codes ****" && \
|
|
git clone \
|
|
--branch ${AOM} \
|
|
--depth 1 https://aomedia.googlesource.com/aom \
|
|
"${SOURCE_FOLDER}"/aom && \
|
|
git clone \
|
|
--branch ${NVCODEC} \
|
|
--depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git \
|
|
"${SOURCE_FOLDER}"/ffnvcodec && \
|
|
git clone \
|
|
--branch libvdpau-${LIBVDPAU} \
|
|
--depth 1 https://gitlab.freedesktop.org/vdpau/libvdpau.git \
|
|
"${SOURCE_FOLDER}"/libvdpau && \
|
|
echo -e "\n**** fetch non-git source codes ****" && \
|
|
set -ex && \
|
|
echo -e "\n$NON_GIT_URL_LIST" | tr " " "\\n" >> /tmp/non_git_url_list && \
|
|
while read -r urls; do \
|
|
FILE_EXTENSION=$(echo "$urls" | sed 's/.*\///'); \
|
|
rm -f "${TARS_FOLDER}/${FILE_EXTENSION}"; \
|
|
curl -o \
|
|
"${TARS_FOLDER}/${FILE_EXTENSION}" -L -C - "$urls" \
|
|
--max-time 40 \
|
|
--retry 5 \
|
|
--retry-delay 3 \
|
|
--retry-max-time 240; \
|
|
tar xf "${TARS_FOLDER}/${FILE_EXTENSION}" -C "${SOURCE_FOLDER}"; \
|
|
done < /tmp/non_git_url_list && \
|
|
echo -e "\n**** fetch and apply config.sub and config.guess for issues with arm64 builds. ****" && \
|
|
curl -o "${TARS_FOLDER}/config.sub" -L -C - \
|
|
'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' \
|
|
--max-time 40 \
|
|
--retry 5 \
|
|
--retry-delay 3 \
|
|
--retry-max-time 240 && \
|
|
curl -o "${TARS_FOLDER}/config.guess" -L -C - \
|
|
'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' \
|
|
--max-time 40 \
|
|
--retry 5 \
|
|
--retry-delay 3 \
|
|
--retry-max-time 240 && \
|
|
set +ex && \
|
|
find "${SOURCE_FOLDER}"/ -name 'config.sub' -exec cp -v "${TARS_FOLDER}/config.sub" {} \; && \
|
|
find "${SOURCE_FOLDER}"/ -name 'config.guess' -exec cp -v "${TARS_FOLDER}/config.guess" {} \; && \
|
|
echo "**** cleanup ****" && \
|
|
rm -rf \
|
|
/tmp/*
|