Created
February 26, 2018 02:13
-
-
Save jrottenberg/07012b91eee2b9806c0787ca87943fe0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ffmpeg - http://ffmpeg.org/download.html | |
# | |
# https://hub.docker.com/r/jrottenberg/ffmpeg/ | |
# | |
# | |
FROM alpine:3.5 AS base | |
RUN apk add --no-cache --update libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 libgomp expat | |
FROM base AS build | |
WORKDIR /tmp/workdir | |
ARG PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig | |
ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib | |
ARG PREFIX=/opt/ffmpeg | |
ARG MAKEFLAGS="-j2" | |
ENV FFMPEG_VERSION=3.4.2 \ | |
FDKAAC_VERSION=0.1.5 \ | |
NASM_VERSION=2.13.03 \ | |
LAME_VERSION=3.99.5 \ | |
LIBASS_VERSION=0.13.7 \ | |
OGG_VERSION=1.3.2 \ | |
OPENCOREAMR_VERSION=0.1.4 \ | |
OPUS_VERSION=1.2 \ | |
OPENJPEG_VERSION=2.1.2 \ | |
THEORA_VERSION=1.1.1 \ | |
VORBIS_VERSION=1.3.5 \ | |
VPX_VERSION=1.7.0 \ | |
X264_VERSION=20170226-2245-stable \ | |
X265_VERSION=2.3 \ | |
XVID_VERSION=1.3.4 \ | |
FREETYPE_VERSION=2.5.5 \ | |
FRIBIDI_VERSION=0.19.7 \ | |
FONTCONFIG_VERSION=2.12.4 \ | |
LIBVIDSTAB_VERSION=1.1.0 \ | |
KVAZAAR_VERSION=1.2.0 \ | |
SRC=/usr/local | |
RUN buildDeps="autoconf \ | |
automake \ | |
bash \ | |
binutils \ | |
bzip2 \ | |
cmake \ | |
curl \ | |
coreutils \ | |
diffutils \ | |
file \ | |
g++ \ | |
gcc \ | |
gperf \ | |
libtool \ | |
make \ | |
python \ | |
openssl-dev \ | |
tar \ | |
yasm \ | |
zlib-dev \ | |
expat-dev" && \ | |
apk add --no-cache --update ${buildDeps} | |
# NASM | |
RUN \ | |
DIR=/tmp/nasm && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sL http://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/nasm-${NASM_VERSION}.tar.gz | \ | |
tar -zx --strip-components=1 && \ | |
./autogen.sh && \ | |
./configure --prefix=${PREFIX} && \ | |
make ${MAKEFLAGS} && \ | |
make install && \ | |
rm -rf ${DIR} | |
## opencore-amr https://sourceforge.net/projects/opencore-amr/ | |
RUN \ | |
DIR=/tmp/opencore-amr && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sL https://10gbps-io.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ | |
tar -zx --strip-components=1 && \ | |
./configure --prefix="${PREFIX}" --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
## x264 http://www.videolan.org/developers/x264.html | |
RUN \ | |
DIR=/tmp/x264 && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${X264_VERSION}.tar.bz2 | \ | |
tar -jx --strip-components=1 && \ | |
./configure --prefix="${PREFIX}" --enable-shared --enable-pic --disable-cli && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
### x265 http://x265.org/ | |
RUN \ | |
DIR=/tmp/x265 && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sL https://download.videolan.org/pub/videolan/x265/x265_${X265_VERSION}.tar.gz | \ | |
tar -zx && \ | |
cd x265_${X265_VERSION}/build/linux && \ | |
sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ | |
sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \ | |
./multilib.sh && \ | |
make -C 8bit install && \ | |
rm -rf ${DIR} | |
### libogg https://www.xiph.org/ogg/ | |
RUN \ | |
DIR=/tmp/ogg && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz && \ | |
tar -zx --strip-components=1 -f libogg-${OGG_VERSION}.tar.gz && \ | |
./configure --prefix="${PREFIX}" --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
### libopus https://www.opus-codec.org/ | |
RUN \ | |
DIR=/tmp/opus && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz && \ | |
tar -zx --strip-components=1 -f opus-${OPUS_VERSION}.tar.gz && \ | |
autoreconf -fiv && \ | |
./configure --prefix="${PREFIX}" --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
### libvorbis https://xiph.org/vorbis/ | |
RUN \ | |
DIR=/tmp/vorbis && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz && \ | |
tar -zx --strip-components=1 -f libvorbis-${VORBIS_VERSION}.tar.gz && \ | |
./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
### libvpx https://www.webmproject.org/code/ | |
RUN \ | |
DIR=/tmp/vpx && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${VPX_VERSION} | \ | |
tar -zx --strip-components=1 && \ | |
./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-pic --enable-shared \ | |
--disable-debug --disable-examples --disable-docs --disable-install-bins && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
### libmp3lame http://lame.sourceforge.net/ | |
RUN \ | |
DIR=/tmp/lame && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sL https://10gbps-io.dl.sourceforge.net/lame/lame/${LAME_VERSION%.*}/lame-${LAME_VERSION}.tar.gz | \ | |
tar -zx --strip-components=1 && \ | |
./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic --disable-frontend && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
### xvid https://www.xvid.com/ | |
RUN \ | |
DIR=/tmp/xvid && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO http://downloads.xvid.org/downloads/xvidcore-${XVID_VERSION}.tar.gz && \ | |
tar -zx -f xvidcore-${XVID_VERSION}.tar.gz && \ | |
cd xvidcore/build/generic && \ | |
./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --datadir="${DIR}" --enable-shared --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
### fdk-aac https://github.com/mstorsjo/fdk-aac | |
RUN \ | |
DIR=/tmp/fdk-aac && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC_VERSION}.tar.gz | \ | |
tar -zx --strip-components=1 && \ | |
autoreconf -fiv && \ | |
./configure --prefix="${PREFIX}" --enable-shared --datadir="${DIR}" && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
## openjpeg https://github.com/uclouvain/openjpeg | |
RUN \ | |
DIR=/tmp/openjpeg && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sL https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz | \ | |
tar -zx --strip-components=1 && \ | |
cmake -DBUILD_THIRDPARTY:BOOL=ON -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
## freetype https://www.freetype.org/ | |
RUN \ | |
DIR=/tmp/freetype && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \ | |
tar -zx --strip-components=1 -f freetype-${FREETYPE_VERSION}.tar.gz && \ | |
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
## libvstab https://github.com/georgmartius/vid.stab | |
RUN \ | |
DIR=/tmp/vid.stab && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ | |
tar -zx --strip-components=1 -f v${LIBVIDSTAB_VERSION}.tar.gz && \ | |
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
## fridibi https://www.fribidi.org/ | |
# + https://github.com/fribidi/fribidi/issues/8 | |
RUN \ | |
DIR=/tmp/fribidi && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO https://github.com/fribidi/fribidi/archive/${FRIBIDI_VERSION}.tar.gz && \ | |
tar -zx --strip-components=1 -f ${FRIBIDI_VERSION}.tar.gz && \ | |
sed -i 's/^SUBDIRS =.*/SUBDIRS=gen.tab charset lib/' Makefile.am && \ | |
./bootstrap --no-config && \ | |
./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ | |
make -j 1 && \ | |
make install && \ | |
rm -rf ${DIR} | |
## fontconfig https://www.freedesktop.org/wiki/Software/fontconfig/ | |
RUN \ | |
DIR=/tmp/fontconfig && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG_VERSION}.tar.bz2 &&\ | |
tar -jx --strip-components=1 -f fontconfig-${FONTCONFIG_VERSION}.tar.bz2 && \ | |
./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
## libass https://github.com/libass/libass | |
RUN \ | |
DIR=/tmp/libass && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO https://github.com/libass/libass/archive/${LIBASS_VERSION}.tar.gz &&\ | |
tar -zx --strip-components=1 -f ${LIBASS_VERSION}.tar.gz && \ | |
./autogen.sh && \ | |
./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
## kvazaar https://github.com/ultravideo/kvazaar | |
RUN \ | |
DIR=/tmp/kvazaar && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO https://github.com/ultravideo/kvazaar/archive/v${KVAZAAR_VERSION}.tar.gz &&\ | |
tar -zx --strip-components=1 -f v${KVAZAAR_VERSION}.tar.gz && \ | |
./autogen.sh && \ | |
./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
### libtheora http://www.theora.org/ | |
RUN \ | |
DIR=/tmp/theora && \ | |
mkdir -p ${DIR} && \ | |
cd ${DIR} && \ | |
curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${THEORA_VERSION}.tar.gz && \ | |
tar -zx --strip-components=1 -f libtheora-${THEORA_VERSION}.tar.gz && \ | |
./autogen.sh && \ | |
./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ | |
make && \ | |
make install && \ | |
rm -rf ${DIR} | |
## ffmpeg https://ffmpeg.org/ | |
RUN \ | |
DIR=$(mktemp -d) && cd ${DIR} && \ | |
curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \ | |
tar -zx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.gz && \ | |
./configure \ | |
--disable-debug \ | |
--disable-doc \ | |
--disable-ffplay \ | |
--enable-shared \ | |
--enable-avresample \ | |
--enable-libopencore-amrnb \ | |
--enable-libopencore-amrwb \ | |
--enable-gpl \ | |
--enable-libass \ | |
--enable-libfreetype \ | |
--enable-libvidstab \ | |
--enable-libmp3lame \ | |
--enable-libopenjpeg \ | |
--enable-libopus \ | |
--enable-libtheora \ | |
--enable-libvorbis \ | |
--enable-libvpx \ | |
--enable-libx265 \ | |
--enable-libxvid \ | |
--enable-libx264 \ | |
--enable-nonfree \ | |
--enable-openssl \ | |
--enable-libfdk_aac \ | |
--enable-libkvazaar \ | |
--enable-postproc \ | |
--enable-small \ | |
--enable-version3 \ | |
--extra-cflags="-I${PREFIX}/include" \ | |
--extra-ldflags="-L${PREFIX}/lib" \ | |
--extra-libs=-ldl \ | |
--prefix="${PREFIX}" && \ | |
make && \ | |
make install && \ | |
make distclean && \ | |
hash -r && \ | |
cd tools && \ | |
make qt-faststart && \ | |
cp qt-faststart ${PREFIX}/bin | |
RUN \ | |
ldd ${PREFIX}/bin/ffmpeg | grep opt/ffmpeg | cut -d ' ' -f 3 | xargs -i cp {} /usr/local/lib/ && \ | |
cp ${PREFIX}/bin/* /usr/local/bin/ && \ | |
cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ | |
LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf | |
### Release Stage | |
FROM base AS release | |
MAINTAINER Julien Rottenberg <julien@rottenberg.info> | |
CMD ["--help"] | |
ENTRYPOINT ["ffmpeg"] | |
COPY --from=build /usr/local /usr/local | |
# Let's make sure the app built correctly | |
# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output | |
RUN apk add --update py-pip && \ | |
pip install \ | |
requests \ | |
requests[security] \ | |
requests-cache \ | |
"stevedore==1.19.1" \ | |
babelfish \ | |
"guessit<2" \ | |
"subliminal<2" \ | |
qtfaststart \ | |
deluge-client |
I tried to launch a few times the docker buld -t
but still the same error.
it appears too for libass
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
As it didn't worked you'll see I changed a little bit the download and untar of the archive, comapred to your updated Dockerfile