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 |
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
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
Hello
I have retry to build the container, using you updqted Dockerfile (thanks for adding tha package pip)
for now still the same issue:
checking for FREETYPE... no
configure: error: Package requirements (freetype2 >= 9.10.3) were not met:
Package freetype2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `freetype2.pc'
to the PKG_CONFIG_PATH environment variable
Package 'freetype2', required by 'virtual:world', not found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables FREETYPE_CFLAGS
and FREETYPE_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
The command '/bin/sh -c 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}' returned a non-zero code: 1
and for the other issu theora and oog. When I compiled vorbis , it checked the same way (apparently) for ogg and found it, but not theora.
BR
Francois