diff --git a/.travis.yml b/.travis.yml index 820041a62..d11edb288 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,12 @@ env: - VERSION=snapshot VARIANT=scratch - VERSION=snapshot VARIANT=vaapi - VERSION=snapshot VARIANT=nvidia + - VERSION=4.2 VARIANT=ubuntu + - VERSION=4.2 VARIANT=alpine + - VERSION=4.2 VARIANT=centos + - VERSION=4.2 VARIANT=scratch + - VERSION=4.2 VARIANT=vaapi + - VERSION=4.2 VARIANT=nvidia - VERSION=4.1 VARIANT=ubuntu - VERSION=4.1 VARIANT=alpine - VERSION=4.1 VARIANT=centos diff --git a/.update.py.swp b/.update.py.swp new file mode 100644 index 000000000..9e41acf4b Binary files /dev/null and b/.update.py.swp differ diff --git a/README.md b/README.md index b7f8f602b..d0eafc552 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -FFmpeg Docker image -================== +# FFmpeg Docker image + [![Docker Stars](https://img.shields.io/docker/stars/jrottenberg/ffmpeg.svg?style=plastic)](https://registry.hub.docker.com/v2/repositories/jrottenberg/ffmpeg/stars/count/) [![Docker pulls](https://img.shields.io/docker/pulls/jrottenberg/ffmpeg.svg?style=plastic)](https://registry.hub.docker.com/v2/repositories/jrottenberg/ffmpeg/) [![Travis](https://img.shields.io/travis/jrottenberg/ffmpeg/master.svg?maxAge=300?style=plastic)](https://travis-ci.org/jrottenberg/ffmpeg) @@ -12,8 +12,7 @@ You can install the latest build of this image by running `docker pull jrottenbe This image can be used as a base for an encoding farm. -Ubuntu builds --------------- +## Builds You can use jrottenberg/ffmpeg or jrottenberg/ffmpeg:3.3 to get the latest build based on ubuntu. @@ -24,44 +23,104 @@ You'll find centos based image using `ffmpeg:X.Y-centos` or `ffmpeg:centos` to g alpine images `ffmpeg:X.Y-alpine` to get the latest. scratch images `ffmpeg:X.Y-scratch` to get the latest. (Scratch is an experimental image containing only FFmpeg and libraries) +Format is `ffmpeg:MAJOR.MINOR-VARIANT` with MAJOR.MINOR in : +- 2.8 +- 3.0 +- 3.1 +- 3.2 +- 3.3 +- 3.4 +- 4.0 +- 4.1 +- snapshot + +and VARIANT in : +- alpine +- centos +- nvidia +- scratch +- ubuntu +- vaapi + + Recent images: ``` -vaapi 86mb 2018-08-16 -snapshot-centos 95mb 2018-08-16 -snapshot-alpine 27mb 2018-08-16 -4.0-vaapi 86mb 2018-08-15 -4.0-ubuntu 94mb 2018-08-16 -4.0-scratch 20mb 2018-08-16 -4.0-centos 95mb 2018-08-16 -3.4-vaapi 84mb 2018-08-15 -3.4-scratch 18mb 2018-08-16 -3.4-alpine 24mb 2018-08-16 -3.4 92mb 2018-08-16 -3.3-scratch 17mb 2018-08-04 -3.2-scratch 17mb 2018-08-16 -3.2-alpine 24mb 2018-08-16 -3.0-scratch 17mb 2018-08-16 -3.0-centos 94mb 2018-08-16 -2.8-scratch 16mb 2018-08-16 -2.8 90mb 2018-08-16 +snapshot-vaapi 74mb +snapshot-ubuntu 86mb +snapshot-scratch 20mb +snapshot-nvidia 640mb +snapshot-centos 97mb +snapshot-alpine 35mb +4.1-vaapi 73mb +4.1-ubuntu 85mb +4.1-scratch 20mb +4.1-nvidia 640mb +4.1-centos 97mb +4.1-alpine 34mb +4.0-vaapi 73mb +4.0-ubuntu 83mb +4.0-scratch 20mb +4.0-nvidia 639mb +4.0-centos 97mb +4.0-alpine 34mb +3.4-vaapi 71mb +3.4-ubuntu 83mb +3.4-scratch 18mb +3.4-nvidia 637mb +3.4-centos 97mb +3.4-alpine 32mb +3.4 83mb +3.3-vaapi 71mb +3.3-ubuntu 83mb +3.3-scratch 18mb +3.3-nvidia 637mb +3.3-centos 96mb +3.3-alpine 31mb +3.3 82mb +3.2-vaapi 83mb +3.2-ubuntu 83mb +3.2-scratch 18mb +3.2-nvidia 623mb +3.2-centos 96mb +3.2-alpine 32mb +3.1-vaapi 83mb +3.1-ubuntu 82mb +3.1-scratch 17mb +3.1-nvidia 623mb +3.1-centos 96mb +3.1-alpine 32mb +3.1 81mb +3.0-ubuntu 82mb +3.0-scratch 17mb +3.0-nvidia 623mb +3.0-centos 96mb +3.0-alpine 31mb +2.8-vaapi 82mb +2.8-ubuntu 81mb +2.8-scratch 17mb +2.8-nvidia 622mb +2.8-centos 95mb +2.8-alpine 30mb ``` -
(How the 'recent images' was generated) +### How the 'recent images' was generated + ``` - $ curl --silent https://hub.docker.com/v2/repositories/jrottenberg/ffmpeg/tags/?page_size=500 | jq -cr ".results|sort_by(.name)|reverse[]|.sz=(.full_size/1048576|floor|tostring+\"mb\")|[.name,( (20-(.name|length))*\" \" ),.sz,( (8-(.sz|length))*\" \"),.last_updated[:10]]|@text|gsub(\"[,\\\"\\\]\\\[]\";null)" | grep 2018-08 +$ curl --silent https://hub.docker.com/v2/repositories/jrottenberg/ffmpeg/tags/?page_size=500 | jq -cr ".results|sort_by(.name)|reverse[]|.sz=(.full_size/1048576|floor|tostring+\"mb\")|[.name,( (20-(.name|length))*\" \" ),.sz,( (8-(.sz|length))*\" \"),.last_updated[:10]]|@text|gsub(\"[,\\\"\\\]\\\[]\";null)" + +# If you want to compare the one you have locally +$ docker images | grep ffmpeg | sort | awk '{print $1 ":" $2 "\t" $7 $8}' ``` -
Please use [Github issues](https://github.com/jrottenberg/ffmpeg/issues/new) to report any bug or missing feature. -Test ----- +## Test ``` ffmpeg version 3.3.4 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609 - configuration: --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-postproc --enable-small --enable-version3 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --prefix=/opt/ffmpeg + configuration: --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-libwebp --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --prefix=/opt/ffmpeg libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 @@ -90,6 +149,7 @@ ffmpeg version 3.3.4 Copyright (c) 2000-2017 the FFmpeg developers --enable-libtheora --enable-libvorbis --enable-libvpx + --enable-libwebp --enable-libx265 --enable-libxvid --enable-libx264 @@ -126,52 +186,55 @@ Capture output from the container to the host running the command #### Convert 10bits MKV into a 10Bits MP4 ``` - docker run -v $PWD:/tmp jrottenberg/ffmpeg:3.4-scratch \ + docker run -v $(pwd):$(pwd) -w $(pwd) jrottenberg/ffmpeg:3.4-scratch \ -stats \ -i http://www.jell.yfish.us/media/jellyfish-20-mbps-hd-hevc-10bit.mkv \ -c:v libx265 -pix_fmt yuv420p10 \ - -t 5 -f mp4 /tmp/test.mp4 + -t 5 -f mp4 test.mp4 ``` The image has been compiled with [X265 Multilib](https://x265.readthedocs.io/en/default/api.html#multi-library-interface). Use the pixel format switch to change the number of bits per pixel by suffixing it with 10 for 10bits or 12 for 12bits. -#### Convert a local GIF into a mp4 +#### Convert a local GIF into a mp4 Let's assume ```original.gif``` is located in the current directory : ``` - docker run -v $PWD:/temp/ \ + docker run -v $(pwd):$(pwd) -w $(pwd)\ jrottenberg/ffmpeg:3.2-scratch -stats \ - -i /temp/original.gif \ - /temp/original-converted.mp4 + -i original.gif \ + original-converted.mp4 ``` #### Use hardware acceleration enabled build -Thanks to [qmfrederik](https://github.com/qmfrederik) for the vaapi ubuntu based variant +Thanks to [qmfrederik](https://github.com/qmfrederik) for the [vaapi ubuntu based variant](https://github.com/jrottenberg/ffmpeg/pull/106) - jrottenberg/ffmpeg:vaapi or jrottenberg/ffmpeg:vaapi-${VERSION} + jrottenberg/ffmpeg:vaapi or jrottenberg/ffmpeg:${VERSION}-vaapi - Run the container with the device attached /dev/dri from your host into the container : -`docker run --device /dev/dri:/dev/dri -v $(pwd):/mnt jrottenberg/ffmpeg:vaapi [...]` +`docker run --device /dev/dri:/dev/dri -v $(pwd):$(pwd) -w $(pwd) jrottenberg/ffmpeg:vaapi [...]` - Have the Intel drivers up and running on your host. You can run `vainfo` (part of vainfo package on Ubuntu) to determine whether your graphics card has been recognized correctly. - Run ffmpeg with the correct parameters, this is the same as when running [ffmpeg natively](https://trac.ffmpeg.org/wiki/Hardware/VAAPI). #### Use nvidia hardware acceleration enabled build + +Thanks to [ShaulMyplay](https://github.com/ShaulMyplay) for the [nvidia based variant](https://github.com/jrottenberg/ffmpeg/pull/168) + Supports nvenc only on all ffmpeg versions, and hardware decoding and scaling on ffmpeg >= 4.0 - Install nvidia latest drivers on host machine. - Install [nvidia-docker](https://github.com/NVIDIA/nvidia-docker) on host machine. -- Run container using "--runtime=nvidia" flag and use supported [ffmpeg hwaccel options](https://trac.ffmpeg.org/wiki/HWAccelIntro) +- Run container using "--runtime=nvidia" flag and use supported [ffmpeg hwaccel options](https://trac.ffmpeg.org/wiki/HWAccelIntro) Hardware encoding only example: -`docker run --runtime=nvidia jrottenberg/ffmpeg:nvidia-2.8 -i INPUT -c:v nvenc_h264 -preset hq OUTPUT` +`docker run --runtime=nvidia jrottenberg/ffmpeg:2.8-nvidia -i INPUT -c:v nvenc_h264 -preset hq OUTPUT` Full hardware acceleration example: -`docker run --runtime=nvidia jrottenberg/ffmpeg:nvidia-4.1 -hwaccel cuvid -c:v h264_cuvid -i INPUT -vf scale_npp=-1:720 -c:v h264_nvenc -preset slow OUTPUT` +`docker run --runtime=nvidia jrottenberg/ffmpeg:4.1-nvidia -hwaccel cuvid -c:v h264_cuvid -i INPUT -vf scale_npp=-1:720 -c:v h264_nvenc -preset slow OUTPUT` + -See what's inside the beast ---------------------------- +##### See what's inside the beast ``` docker run -it --entrypoint='bash' jrottenberg/ffmpeg @@ -179,8 +242,7 @@ docker run -it --entrypoint='bash' jrottenberg/ffmpeg for i in ogg amr vorbis theora mp3lame opus vpx xvid fdk x264 x265;do echo $i; find /usr/local/ -name *$i*;done ``` -Keep up to date ---------------- +## Keep up to date See Dockerfile-env to update a version @@ -192,6 +254,7 @@ See Dockerfile-env to update a version - [LAME_VERSION](http://lame.sourceforge.net/download.php): [GNU Lesser General Public License (LGPL) version 2.1](http://lame.cvs.sourceforge.net/viewvc/lame/lame/LICENSE?revision=1.9) - [OPUS_VERSION](https://www.opus-codec.org/downloads/): [BSD-style license](https://www.opus-codec.org/license/) - [VPX_VERSION](https://github.com/webmproject/libvpx/releases): [BSD-style license](https://github.com/webmproject/libvpx/blob/master/LICENSE) +- [WEBP_VERSION](https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html): [BSD-style license](https://github.com/webmproject/libvpx/blob/master/LICENSE) - [XVID_VERSION](https://labs.xvid.com/source/): [GNU General Public Licence (GPL) version 2](http://websvn.xvid.org/cvs/viewvc.cgi/trunk/xvidcore/LICENSE?revision=851) - [FDKAAC_VERSION](https://github.com/mstorsjo/fdk-aac/releases): [Liberal but not a license of patented technologies](https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE) - [FREETYPE_VERSION](http://download.savannah.gnu.org/releases/freetype/): [GNU General Public License (GPL) version 2](https://www.freetype.org/license.html) @@ -201,8 +264,7 @@ See Dockerfile-env to update a version - [X265_VERSION](https://bitbucket.org/multicoreware/x265/downloads/):[GNU General Public License (GPL) version 2](https://bitbucket.org/multicoreware/x265/raw/f8ae7afc1f61ed0db3b2f23f5d581706fe6ed677/COPYING) -Contribute ------------ +## Contribute ``` diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f5a48d092..267595563 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,3 +1,8 @@ +variables: +- group: videotoolsbuild-dockerhub +- name: DOCKER + value: jrottenberg/ffmpeg + jobs: - job: Build pool: @@ -23,6 +28,24 @@ jobs: snapshot_nvidia: VERSION: snapshot VARIANT: nvidia + 4_2_ubuntu: + VERSION: 4.2 + VARIANT: ubuntu + 4_2_alpine: + VERSION: 4.2 + VARIANT: alpine + 4_2_centos: + VERSION: 4.2 + VARIANT: centos + 4_2_scratch: + VERSION: 4.2 + VARIANT: scratch + 4_2_vaapi: + VERSION: 4.2 + VARIANT: vaapi + 4_2_nvidia: + VERSION: 4.2 + VARIANT: nvidia 4_1_ubuntu: VERSION: 4.1 VARIANT: ubuntu @@ -168,6 +191,14 @@ jobs: VERSION: 2.8 VARIANT: nvidia steps: - - script: | - docker build -t ffmpeg:${VERSION}-${VARIANT} --build-arg MAKEFLAGS="-j$(($(nproc) + 1))" docker-images/${VERSION}/${VARIANT} - docker run --rm ffmpeg:${VERSION}-${VARIANT} -buildconf + - bash: | + docker build -t ${DOCKER}:${VERSION}-${VARIANT} --build-arg MAKEFLAGS="-j$(($(grep -c ^processor /proc/cpuinfo) + 1))" docker-images/${VERSION}/${VARIANT} + docker run --rm ${DOCKER}:${VERSION}-${VARIANT} -buildconf + displayName: Build docker image + - bash: | + docker login --username ${DOCKER_LOGIN} --password ${DOCKER_PASSWORD} + docker push ${DOCKER}:${VERSION}-${VARIANT} + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) + displayName: Push docker image + env: + DOCKER_PASSWORD: $(docker.password) \ No newline at end of file diff --git a/docker-images/2.8/alpine/Dockerfile b/docker-images/2.8/alpine/Dockerfile index 0cb0a74c1..92971e830 100644 --- a/docker-images/2.8/alpine/Dockerfile +++ b/docker-images/2.8/alpine/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # https://hub.docker.com/r/jrottenberg/ffmpeg/ @@ -18,37 +20,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=2.8.15 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=2.8.15 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +74,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,3 +390,433 @@ 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 +======= +======= +>>>>>>> fix extra comma +FROM alpine:3.8 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.0 \ + libssl1.0 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=2.8.15 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=1.5.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=0.6.1 +ARG NVENC_VERSION=8.2.15.8 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/2.8/arm32v7/Dockerfile b/docker-images/2.8/arm32v7/Dockerfile new file mode 100644 index 000000000..94446c7b7 --- /dev/null +++ b/docker-images/2.8/arm32v7/Dockerfile @@ -0,0 +1,426 @@ +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=2.8.15 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=1.5.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=0.6.1 +ARG NVENC_VERSION=8.2.15.8 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/* | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + + +FROM scratch AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["/bin/ffmpeg"] + +COPY --from=build /usr/local / +RUN test "scratch" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/2.8/centos/Dockerfile b/docker-images/2.8/centos/Dockerfile index 9fe8d1875..37fd49d77 100644 --- a/docker-images/2.8/centos/Dockerfile +++ b/docker-images/2.8/centos/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos @@ -20,37 +22,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=2.8.15 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=2.8.15 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,4 +389,470 @@ ENV LD_LIBRARY_PATH=/usr/local/lib64 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM centos:7 as base + +RUN yum -y install libva libgomp libuuid && \ + echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf && \ + echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig:/tmp/build/lib64/pkgconfig + +RUN yum --enablerepo=extras install -y epel-release && \ + yum install -y \ + libva-devel \ + autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel \ + libuuid-devel \ + libcurl-devel \ + xz-devel \ + libarchive-devel \ + python36 \ + python36-pip + +#Centos is missing recent version of CMake (>= 3.5) +RUN \ + DIR=/tmp/cmake && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz | \ + tar -zx --strip-components=1 && \ + ./bootstrap --system-libs --no-system-jsoncpp && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing recent version of nasm (>= 2.13) +RUN \ + DIR=/tmp/nasm && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="/usr" && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing ninja +RUN \ + DIR=/tmp/ninja && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/ninja-build/ninja/archive/v1.9.0.tar.gz | \ + tar -zx --strip-components=1 && \ + python configure.py --bootstrap && \ + cp ./ninja /usr/bin/ && \ + rm -rf ${DIR} + +RUN \ + DIR=/tmp/meson && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + pip3 install meson && \ + rm -rf ${DIR} + +ARG FFMPEG_VERSION=2.8.15 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=1.5.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=0.6.1 +ARG NVENC_VERSION=8.2.15.8 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/2.8/nvidia/Dockerfile b/docker-images/2.8/nvidia/Dockerfile index 767d2fb01..cb7e928d3 100644 --- a/docker-images/2.8/nvidia/Dockerfile +++ b/docker-images/2.8/nvidia/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -35,37 +37,39 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" -ENV FFMPEG_VERSION=2.8.15 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=2.8.15 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +109,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +200,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -360,6 +375,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -406,3 +422,427 @@ COPY --from=build /usr/local/lib /usr/local/lib/ # Let's make sure the app built correctly # Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> fix extra comma +FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS base + +ENV NVIDIA_DRIVER_CAPABILITIES=video + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig +ARG C_INCLUDE_PATH=/tmp/build/include/ffnvcodec + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev + +ARG FFMPEG_VERSION=2.8.15 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=1.5.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=0.6.1 +ARG NVENC_VERSION=8.2.15.8 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/2.8/scratch/Dockerfile b/docker-images/2.8/scratch/Dockerfile index 2c9aa8401..fca5b23c7 100644 --- a/docker-images/2.8/scratch/Dockerfile +++ b/docker-images/2.8/scratch/Dockerfile @@ -13,37 +13,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=2.8.15 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=2.8.15 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +68,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +78,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +169,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +343,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/2.8/ubuntu/Dockerfile b/docker-images/2.8/ubuntu/Dockerfile index 1a4aa2aa5..44ba6952c 100644 --- a/docker-images/2.8/ubuntu/Dockerfile +++ b/docker-images/2.8/ubuntu/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -5,7 +7,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +23,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=2.8.15 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=2.8.15 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +84,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +175,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +390,427 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM ubuntu:18.04 AS base + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ + ninja-build \ + meson + +ARG FFMPEG_VERSION=2.8.15 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=1.5.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=0.6.1 +ARG NVENC_VERSION=8.2.15.8 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/2.8/vaapi/Dockerfile b/docker-images/2.8/vaapi/Dockerfile index d54e66186..60447f949 100644 --- a/docker-images/2.8/vaapi/Dockerfile +++ b/docker-images/2.8/vaapi/Dockerfile @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=2.8.15 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=2.8.15 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -335,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.0/alpine/Dockerfile b/docker-images/3.0/alpine/Dockerfile index bc9749238..9ce6dbf9a 100644 --- a/docker-images/3.0/alpine/Dockerfile +++ b/docker-images/3.0/alpine/Dockerfile @@ -18,37 +18,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.0.12 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.0.12 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +72,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +81,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +172,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +346,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.0/centos/Dockerfile b/docker-images/3.0/centos/Dockerfile index f75148a5f..7739d0eff 100644 --- a/docker-images/3.0/centos/Dockerfile +++ b/docker-images/3.0/centos/Dockerfile @@ -20,37 +20,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.0.12 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.0.12 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +81,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +172,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +346,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.0/nvidia/Dockerfile b/docker-images/3.0/nvidia/Dockerfile index 7862b0656..c6822b901 100644 --- a/docker-images/3.0/nvidia/Dockerfile +++ b/docker-images/3.0/nvidia/Dockerfile @@ -35,37 +35,39 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" -ENV FFMPEG_VERSION=3.0.12 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.0.12 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +107,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +198,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -360,6 +373,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.0/scratch/Dockerfile b/docker-images/3.0/scratch/Dockerfile index 7c6dd727b..3fce423b8 100644 --- a/docker-images/3.0/scratch/Dockerfile +++ b/docker-images/3.0/scratch/Dockerfile @@ -13,37 +13,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.0.12 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.0.12 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +68,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +78,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +169,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +343,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.0/ubuntu/Dockerfile b/docker-images/3.0/ubuntu/Dockerfile index 2264764b2..8a9433ca9 100644 --- a/docker-images/3.0/ubuntu/Dockerfile +++ b/docker-images/3.0/ubuntu/Dockerfile @@ -5,7 +5,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.0.12 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.0.12 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +82,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +173,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +347,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +388,4 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/3.0/vaapi/Dockerfile b/docker-images/3.0/vaapi/Dockerfile index 07ca4d9a9..5b424af79 100644 --- a/docker-images/3.0/vaapi/Dockerfile +++ b/docker-images/3.0/vaapi/Dockerfile @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.0.12 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.0.12 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -336,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.1/alpine/Dockerfile b/docker-images/3.1/alpine/Dockerfile index a369299ce..7ba2d7ee3 100644 --- a/docker-images/3.1/alpine/Dockerfile +++ b/docker-images/3.1/alpine/Dockerfile @@ -18,37 +18,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.1.11 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.1.11 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +72,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +81,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +172,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +346,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.1/centos/Dockerfile b/docker-images/3.1/centos/Dockerfile index c79e08502..8bcad0787 100644 --- a/docker-images/3.1/centos/Dockerfile +++ b/docker-images/3.1/centos/Dockerfile @@ -20,37 +20,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.1.11 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.1.11 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +81,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +172,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +346,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.1/nvidia/Dockerfile b/docker-images/3.1/nvidia/Dockerfile index bbde61ffe..ed2c219af 100644 --- a/docker-images/3.1/nvidia/Dockerfile +++ b/docker-images/3.1/nvidia/Dockerfile @@ -35,37 +35,39 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" -ENV FFMPEG_VERSION=3.1.11 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.1.11 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +107,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +198,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -360,6 +373,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.1/scratch/Dockerfile b/docker-images/3.1/scratch/Dockerfile index 72aaddfd1..ff7b6fcd8 100644 --- a/docker-images/3.1/scratch/Dockerfile +++ b/docker-images/3.1/scratch/Dockerfile @@ -13,37 +13,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.1.11 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.1.11 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +68,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +78,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +169,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +343,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.1/ubuntu/Dockerfile b/docker-images/3.1/ubuntu/Dockerfile index 626086b60..62e7e0d0e 100644 --- a/docker-images/3.1/ubuntu/Dockerfile +++ b/docker-images/3.1/ubuntu/Dockerfile @@ -5,7 +5,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.1.11 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.1.11 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +82,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +173,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +347,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +388,4 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/3.1/vaapi/Dockerfile b/docker-images/3.1/vaapi/Dockerfile index b4165dc01..214e1a0de 100644 --- a/docker-images/3.1/vaapi/Dockerfile +++ b/docker-images/3.1/vaapi/Dockerfile @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.1.11 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.1.11 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -336,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.2/alpine/Dockerfile b/docker-images/3.2/alpine/Dockerfile index fcef21416..fe9c86121 100644 --- a/docker-images/3.2/alpine/Dockerfile +++ b/docker-images/3.2/alpine/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # https://hub.docker.com/r/jrottenberg/ffmpeg/ @@ -18,37 +20,47 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" +<<<<<<< HEAD +ENV FFMPEG_VERSION=3.2.14 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ +======= ENV FFMPEG_VERSION=3.2.14 \ FDKAAC_VERSION=0.1.5 \ LAME_VERSION=3.100 \ LIBASS_VERSION=0.13.7 \ OGG_VERSION=1.3.2 \ +>>>>>>> 3.2.14 OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +82,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +91,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +182,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +356,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,3 +398,433 @@ 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 +======= +======= +>>>>>>> fix extra comma +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=3.2.14 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/3.2/arm32v7/Dockerfile b/docker-images/3.2/arm32v7/Dockerfile new file mode 100644 index 000000000..e5824abb0 --- /dev/null +++ b/docker-images/3.2/arm32v7/Dockerfile @@ -0,0 +1,426 @@ +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=3.2.14 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/* | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + + +FROM scratch AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["/bin/ffmpeg"] + +COPY --from=build /usr/local / +RUN test "scratch" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/3.2/centos/Dockerfile b/docker-images/3.2/centos/Dockerfile index a4105e4eb..00554be73 100644 --- a/docker-images/3.2/centos/Dockerfile +++ b/docker-images/3.2/centos/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos @@ -20,37 +22,47 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" +<<<<<<< HEAD +ENV FFMPEG_VERSION=3.2.14 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ +======= ENV FFMPEG_VERSION=3.2.14 \ FDKAAC_VERSION=0.1.5 \ LAME_VERSION=3.100 \ LIBASS_VERSION=0.13.7 \ OGG_VERSION=1.3.2 \ +>>>>>>> 3.2.14 OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +91,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +182,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +356,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,4 +397,470 @@ ENV LD_LIBRARY_PATH=/usr/local/lib64 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM centos:7 as base + +RUN yum -y install libva libgomp libuuid && \ + echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf && \ + echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig:/tmp/build/lib64/pkgconfig + +RUN yum --enablerepo=extras install -y epel-release && \ + yum install -y \ + libva-devel \ + autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel \ + libuuid-devel \ + libcurl-devel \ + xz-devel \ + libarchive-devel \ + python36 \ + python36-pip + +#Centos is missing recent version of CMake (>= 3.5) +RUN \ + DIR=/tmp/cmake && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz | \ + tar -zx --strip-components=1 && \ + ./bootstrap --system-libs --no-system-jsoncpp && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing recent version of nasm (>= 2.13) +RUN \ + DIR=/tmp/nasm && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="/usr" && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing ninja +RUN \ + DIR=/tmp/ninja && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/ninja-build/ninja/archive/v1.9.0.tar.gz | \ + tar -zx --strip-components=1 && \ + python configure.py --bootstrap && \ + cp ./ninja /usr/bin/ && \ + rm -rf ${DIR} + +RUN \ + DIR=/tmp/meson && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + pip3 install meson && \ + rm -rf ${DIR} + +ARG FFMPEG_VERSION=3.2.14 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/3.2/nvidia/Dockerfile b/docker-images/3.2/nvidia/Dockerfile index 810465092..f2c5b1fe4 100644 --- a/docker-images/3.2/nvidia/Dockerfile +++ b/docker-images/3.2/nvidia/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -35,37 +37,47 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" +<<<<<<< HEAD +ENV FFMPEG_VERSION=3.2.14 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ +======= ENV FFMPEG_VERSION=3.2.14 \ FDKAAC_VERSION=0.1.5 \ LAME_VERSION=3.100 \ LIBASS_VERSION=0.13.7 \ OGG_VERSION=1.3.2 \ +>>>>>>> 3.2.14 OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +117,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +208,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -360,6 +383,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -406,3 +430,427 @@ COPY --from=build /usr/local/lib /usr/local/lib/ # Let's make sure the app built correctly # Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> fix extra comma +FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS base + +ENV NVIDIA_DRIVER_CAPABILITIES=video + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig +ARG C_INCLUDE_PATH=/tmp/build/include/ffnvcodec + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev + +ARG FFMPEG_VERSION=3.2.14 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/3.2/scratch/Dockerfile b/docker-images/3.2/scratch/Dockerfile index 75932cf3a..261911b78 100644 --- a/docker-images/3.2/scratch/Dockerfile +++ b/docker-images/3.2/scratch/Dockerfile @@ -13,37 +13,47 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" +<<<<<<< HEAD +ENV FFMPEG_VERSION=3.2.14 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ +======= ENV FFMPEG_VERSION=3.2.14 \ FDKAAC_VERSION=0.1.5 \ LAME_VERSION=3.100 \ LIBASS_VERSION=0.13.7 \ OGG_VERSION=1.3.2 \ +>>>>>>> 3.2.14 OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +76,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +86,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +177,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +351,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.2/ubuntu/Dockerfile b/docker-images/3.2/ubuntu/Dockerfile index d434734cb..1c51127a3 100644 --- a/docker-images/3.2/ubuntu/Dockerfile +++ b/docker-images/3.2/ubuntu/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -5,7 +7,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +23,47 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" +<<<<<<< HEAD +ENV FFMPEG_VERSION=3.2.14 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ +======= ENV FFMPEG_VERSION=3.2.14 \ FDKAAC_VERSION=0.1.5 \ LAME_VERSION=3.100 \ LIBASS_VERSION=0.13.7 \ OGG_VERSION=1.3.2 \ +>>>>>>> 3.2.14 OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +92,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +183,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +357,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +398,427 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM ubuntu:18.04 AS base + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ + ninja-build \ + meson + +ARG FFMPEG_VERSION=3.2.14 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-nvenc \ + --enable-nonfree \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/3.2/vaapi/Dockerfile b/docker-images/3.2/vaapi/Dockerfile index 20a1aacfd..79e26ab6b 100644 --- a/docker-images/3.2/vaapi/Dockerfile +++ b/docker-images/3.2/vaapi/Dockerfile @@ -21,37 +21,47 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" +<<<<<<< HEAD +ENV FFMPEG_VERSION=3.2.14 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ +======= ENV FFMPEG_VERSION=3.2.14 \ FDKAAC_VERSION=0.1.5 \ LAME_VERSION=3.100 \ LIBASS_VERSION=0.13.7 \ OGG_VERSION=1.3.2 \ +>>>>>>> 3.2.14 OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +91,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +182,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -336,6 +357,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.3/alpine/Dockerfile b/docker-images/3.3/alpine/Dockerfile index b15b3ba1e..50086bbcf 100644 --- a/docker-images/3.3/alpine/Dockerfile +++ b/docker-images/3.3/alpine/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # https://hub.docker.com/r/jrottenberg/ffmpeg/ @@ -18,37 +20,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.3.9 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.3.9 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +74,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,3 +390,434 @@ 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 +======= +======= +>>>>>>> fix extra comma +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=3.3.9 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/3.3/arm32v7/Dockerfile b/docker-images/3.3/arm32v7/Dockerfile new file mode 100644 index 000000000..8eea0df28 --- /dev/null +++ b/docker-images/3.3/arm32v7/Dockerfile @@ -0,0 +1,427 @@ +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=3.3.9 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/* | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + + +FROM scratch AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["/bin/ffmpeg"] + +COPY --from=build /usr/local / +RUN test "scratch" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/3.3/centos/Dockerfile b/docker-images/3.3/centos/Dockerfile index 61837b56f..4786f70d8 100644 --- a/docker-images/3.3/centos/Dockerfile +++ b/docker-images/3.3/centos/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos @@ -20,37 +22,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.3.9 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.3.9 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,4 +389,471 @@ ENV LD_LIBRARY_PATH=/usr/local/lib64 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM centos:7 as base + +RUN yum -y install libva libgomp libuuid && \ + echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf && \ + echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig:/tmp/build/lib64/pkgconfig + +RUN yum --enablerepo=extras install -y epel-release && \ + yum install -y \ + libva-devel \ + autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel \ + libuuid-devel \ + libcurl-devel \ + xz-devel \ + libarchive-devel \ + python36 \ + python36-pip + +#Centos is missing recent version of CMake (>= 3.5) +RUN \ + DIR=/tmp/cmake && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz | \ + tar -zx --strip-components=1 && \ + ./bootstrap --system-libs --no-system-jsoncpp && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing recent version of nasm (>= 2.13) +RUN \ + DIR=/tmp/nasm && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="/usr" && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing ninja +RUN \ + DIR=/tmp/ninja && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/ninja-build/ninja/archive/v1.9.0.tar.gz | \ + tar -zx --strip-components=1 && \ + python configure.py --bootstrap && \ + cp ./ninja /usr/bin/ && \ + rm -rf ${DIR} + +RUN \ + DIR=/tmp/meson && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + pip3 install meson && \ + rm -rf ${DIR} + +ARG FFMPEG_VERSION=3.3.9 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/3.3/nvidia/Dockerfile b/docker-images/3.3/nvidia/Dockerfile index c3d65e545..6762145d5 100644 --- a/docker-images/3.3/nvidia/Dockerfile +++ b/docker-images/3.3/nvidia/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -35,37 +37,39 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" -ENV FFMPEG_VERSION=3.3.9 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.3.9 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +109,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +200,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -360,6 +375,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -406,3 +422,428 @@ COPY --from=build /usr/local/lib /usr/local/lib/ # Let's make sure the app built correctly # Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> fix extra comma +FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS base + +ENV NVIDIA_DRIVER_CAPABILITIES=video + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig +ARG C_INCLUDE_PATH=/tmp/build/include/ffnvcodec + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev + +ARG FFMPEG_VERSION=3.3.9 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/3.3/scratch/Dockerfile b/docker-images/3.3/scratch/Dockerfile index 3a47cfc76..7412da7f4 100644 --- a/docker-images/3.3/scratch/Dockerfile +++ b/docker-images/3.3/scratch/Dockerfile @@ -13,37 +13,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.3.9 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.3.9 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +68,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +78,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +169,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +343,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.3/ubuntu/Dockerfile b/docker-images/3.3/ubuntu/Dockerfile index ab46603ee..3be1e7c21 100644 --- a/docker-images/3.3/ubuntu/Dockerfile +++ b/docker-images/3.3/ubuntu/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -5,7 +7,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +23,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.3.9 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.3.9 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +84,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +175,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +390,428 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM ubuntu:18.04 AS base + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ + ninja-build \ + meson + +ARG FFMPEG_VERSION=3.3.9 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/3.3/vaapi/Dockerfile b/docker-images/3.3/vaapi/Dockerfile index 6d4391838..6fdf51ad2 100644 --- a/docker-images/3.3/vaapi/Dockerfile +++ b/docker-images/3.3/vaapi/Dockerfile @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.3.9 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.3.9 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -336,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.4/alpine/Dockerfile b/docker-images/3.4/alpine/Dockerfile index b4e669f8e..1f09a55d4 100644 --- a/docker-images/3.4/alpine/Dockerfile +++ b/docker-images/3.4/alpine/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # https://hub.docker.com/r/jrottenberg/ffmpeg/ @@ -18,37 +20,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.4.6 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.4.6 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +74,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,3 +390,434 @@ 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 +======= +======= +>>>>>>> fix extra comma +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=3.4.6 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/3.4/arm32v7/Dockerfile b/docker-images/3.4/arm32v7/Dockerfile new file mode 100644 index 000000000..06e446af8 --- /dev/null +++ b/docker-images/3.4/arm32v7/Dockerfile @@ -0,0 +1,427 @@ +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=3.4.6 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/* | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + + +FROM scratch AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["/bin/ffmpeg"] + +COPY --from=build /usr/local / +RUN test "scratch" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/3.4/centos/Dockerfile b/docker-images/3.4/centos/Dockerfile index 1215bbf14..cf846b073 100644 --- a/docker-images/3.4/centos/Dockerfile +++ b/docker-images/3.4/centos/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos @@ -20,37 +22,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.4.6 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.4.6 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,4 +389,471 @@ ENV LD_LIBRARY_PATH=/usr/local/lib64 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM centos:7 as base + +RUN yum -y install libva libgomp libuuid && \ + echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf && \ + echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig:/tmp/build/lib64/pkgconfig + +RUN yum --enablerepo=extras install -y epel-release && \ + yum install -y \ + libva-devel \ + autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel \ + libuuid-devel \ + libcurl-devel \ + xz-devel \ + libarchive-devel \ + python36 \ + python36-pip + +#Centos is missing recent version of CMake (>= 3.5) +RUN \ + DIR=/tmp/cmake && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz | \ + tar -zx --strip-components=1 && \ + ./bootstrap --system-libs --no-system-jsoncpp && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing recent version of nasm (>= 2.13) +RUN \ + DIR=/tmp/nasm && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="/usr" && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing ninja +RUN \ + DIR=/tmp/ninja && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/ninja-build/ninja/archive/v1.9.0.tar.gz | \ + tar -zx --strip-components=1 && \ + python configure.py --bootstrap && \ + cp ./ninja /usr/bin/ && \ + rm -rf ${DIR} + +RUN \ + DIR=/tmp/meson && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + pip3 install meson && \ + rm -rf ${DIR} + +ARG FFMPEG_VERSION=3.4.6 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/3.4/nvidia/Dockerfile b/docker-images/3.4/nvidia/Dockerfile index 52e81e6e7..ba457aed5 100644 --- a/docker-images/3.4/nvidia/Dockerfile +++ b/docker-images/3.4/nvidia/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -35,37 +37,39 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" -ENV FFMPEG_VERSION=3.4.6 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.4.6 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +109,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +200,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -360,6 +375,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -406,3 +422,428 @@ COPY --from=build /usr/local/lib /usr/local/lib/ # Let's make sure the app built correctly # Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> fix extra comma +FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS base + +ENV NVIDIA_DRIVER_CAPABILITIES=video + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig +ARG C_INCLUDE_PATH=/tmp/build/include/ffnvcodec + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev + +ARG FFMPEG_VERSION=3.4.6 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/3.4/scratch/Dockerfile b/docker-images/3.4/scratch/Dockerfile index e52b2001a..bdfda6855 100644 --- a/docker-images/3.4/scratch/Dockerfile +++ b/docker-images/3.4/scratch/Dockerfile @@ -13,37 +13,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.4.6 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.4.6 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +68,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +78,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +169,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +343,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/3.4/ubuntu/Dockerfile b/docker-images/3.4/ubuntu/Dockerfile index 97aba403d..8008fa5f0 100644 --- a/docker-images/3.4/ubuntu/Dockerfile +++ b/docker-images/3.4/ubuntu/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -5,7 +7,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +23,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.4.6 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.4.6 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +84,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +175,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +390,428 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM ubuntu:18.04 AS base + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ + ninja-build \ + meson + +ARG FFMPEG_VERSION=3.4.6 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.1.2 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/3.4/vaapi/Dockerfile b/docker-images/3.4/vaapi/Dockerfile index 753376589..b99490743 100644 --- a/docker-images/3.4/vaapi/Dockerfile +++ b/docker-images/3.4/vaapi/Dockerfile @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=3.4.6 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=3.4.6 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -336,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/4.0/alpine/Dockerfile b/docker-images/4.0/alpine/Dockerfile index d87c380bf..9899b15a2 100644 --- a/docker-images/4.0/alpine/Dockerfile +++ b/docker-images/4.0/alpine/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # https://hub.docker.com/r/jrottenberg/ffmpeg/ @@ -18,37 +20,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.0.4 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.0.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +74,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,3 +390,448 @@ 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 +======= +======= +>>>>>>> fix extra comma +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=4.0.4 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/4.0/arm32v7/Dockerfile b/docker-images/4.0/arm32v7/Dockerfile new file mode 100644 index 000000000..3aa229226 --- /dev/null +++ b/docker-images/4.0/arm32v7/Dockerfile @@ -0,0 +1,441 @@ +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=4.0.4 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/* | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + + +FROM scratch AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["/bin/ffmpeg"] + +COPY --from=build /usr/local / +RUN test "scratch" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/4.0/centos/Dockerfile b/docker-images/4.0/centos/Dockerfile index f3c6cfc94..aa44d08de 100644 --- a/docker-images/4.0/centos/Dockerfile +++ b/docker-images/4.0/centos/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos @@ -20,37 +22,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.0.4 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.0.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,4 +389,485 @@ ENV LD_LIBRARY_PATH=/usr/local/lib64 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM centos:7 as base + +RUN yum -y install libva libgomp libuuid && \ + echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf && \ + echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig:/tmp/build/lib64/pkgconfig + +RUN yum --enablerepo=extras install -y epel-release && \ + yum install -y \ + libva-devel \ + autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel \ + libuuid-devel \ + libcurl-devel \ + xz-devel \ + libarchive-devel \ + python36 \ + python36-pip + +#Centos is missing recent version of CMake (>= 3.5) +RUN \ + DIR=/tmp/cmake && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz | \ + tar -zx --strip-components=1 && \ + ./bootstrap --system-libs --no-system-jsoncpp && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing recent version of nasm (>= 2.13) +RUN \ + DIR=/tmp/nasm && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="/usr" && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing ninja +RUN \ + DIR=/tmp/ninja && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/ninja-build/ninja/archive/v1.9.0.tar.gz | \ + tar -zx --strip-components=1 && \ + python configure.py --bootstrap && \ + cp ./ninja /usr/bin/ && \ + rm -rf ${DIR} + +RUN \ + DIR=/tmp/meson && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + pip3 install meson && \ + rm -rf ${DIR} + +ARG FFMPEG_VERSION=4.0.4 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/4.0/nvidia/Dockerfile b/docker-images/4.0/nvidia/Dockerfile index f5af37740..391fd9d88 100644 --- a/docker-images/4.0/nvidia/Dockerfile +++ b/docker-images/4.0/nvidia/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -35,37 +37,39 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" -ENV FFMPEG_VERSION=4.0.4 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.0.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +109,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +200,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -363,6 +378,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -409,3 +425,442 @@ COPY --from=build /usr/local/lib /usr/local/lib/ # Let's make sure the app built correctly # Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> fix extra comma +FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS base + +ENV NVIDIA_DRIVER_CAPABILITIES=video + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig +ARG C_INCLUDE_PATH=/tmp/build/include/ffnvcodec + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev + +ARG FFMPEG_VERSION=4.0.4 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/4.0/scratch/Dockerfile b/docker-images/4.0/scratch/Dockerfile index 25c509a16..9ffda5cfb 100644 --- a/docker-images/4.0/scratch/Dockerfile +++ b/docker-images/4.0/scratch/Dockerfile @@ -13,37 +13,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.0.4 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.0.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +68,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +78,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +169,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +343,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/4.0/ubuntu/Dockerfile b/docker-images/4.0/ubuntu/Dockerfile index bbcaff765..2511001aa 100644 --- a/docker-images/4.0/ubuntu/Dockerfile +++ b/docker-images/4.0/ubuntu/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -5,7 +7,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +23,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.0.4 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.0.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +84,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +175,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +390,442 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM ubuntu:18.04 AS base + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ + ninja-build \ + meson + +ARG FFMPEG_VERSION=4.0.4 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=0.1.6 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/4.0/vaapi/Dockerfile b/docker-images/4.0/vaapi/Dockerfile index d4fb83c13..36333b0f5 100644 --- a/docker-images/4.0/vaapi/Dockerfile +++ b/docker-images/4.0/vaapi/Dockerfile @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.0.4 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.0.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -336,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/4.1/alpine/Dockerfile b/docker-images/4.1/alpine/Dockerfile index d8a1d5867..e61a04b4e 100644 --- a/docker-images/4.1/alpine/Dockerfile +++ b/docker-images/4.1/alpine/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # https://hub.docker.com/r/jrottenberg/ffmpeg/ @@ -18,37 +20,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.1.3 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.1.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +74,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,3 +390,450 @@ 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 +======= +======= +>>>>>>> fix extra comma +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libvdpau libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libvdpau-dev libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=4.1.3 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-vdpau \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/4.1/arm32v7/Dockerfile b/docker-images/4.1/arm32v7/Dockerfile new file mode 100644 index 000000000..5e798060e --- /dev/null +++ b/docker-images/4.1/arm32v7/Dockerfile @@ -0,0 +1,443 @@ +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libvdpau libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libvdpau-dev libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=4.1.3 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-vdpau \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/* | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + + +FROM scratch AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["/bin/ffmpeg"] + +COPY --from=build /usr/local / +RUN test "scratch" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/4.1/centos/Dockerfile b/docker-images/4.1/centos/Dockerfile index cb68df0f5..f8d85c401 100644 --- a/docker-images/4.1/centos/Dockerfile +++ b/docker-images/4.1/centos/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos @@ -20,37 +22,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.1.3 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.1.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,4 +389,487 @@ ENV LD_LIBRARY_PATH=/usr/local/lib64 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM centos:7 as base + +RUN yum -y install libvdpau libva libgomp libuuid && \ + echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf && \ + echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig:/tmp/build/lib64/pkgconfig + +RUN yum --enablerepo=extras install -y epel-release && \ + yum install -y \ + libvdpau-devel libva-devel \ + autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel \ + libuuid-devel \ + libcurl-devel \ + xz-devel \ + libarchive-devel \ + python36 \ + python36-pip + +#Centos is missing recent version of CMake (>= 3.5) +RUN \ + DIR=/tmp/cmake && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz | \ + tar -zx --strip-components=1 && \ + ./bootstrap --system-libs --no-system-jsoncpp && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing recent version of nasm (>= 2.13) +RUN \ + DIR=/tmp/nasm && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="/usr" && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing ninja +RUN \ + DIR=/tmp/ninja && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/ninja-build/ninja/archive/v1.9.0.tar.gz | \ + tar -zx --strip-components=1 && \ + python configure.py --bootstrap && \ + cp ./ninja /usr/bin/ && \ + rm -rf ${DIR} + +RUN \ + DIR=/tmp/meson && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + pip3 install meson && \ + rm -rf ${DIR} + +ARG FFMPEG_VERSION=4.1.3 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-vdpau \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/4.1/nvidia/Dockerfile b/docker-images/4.1/nvidia/Dockerfile index d0f9ae97f..84c9c6dfb 100644 --- a/docker-images/4.1/nvidia/Dockerfile +++ b/docker-images/4.1/nvidia/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -35,37 +37,39 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" -ENV FFMPEG_VERSION=4.1.3 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.1.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +109,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +200,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -363,6 +378,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -409,3 +425,444 @@ COPY --from=build /usr/local/lib /usr/local/lib/ # Let's make sure the app built correctly # Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> fix extra comma +FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS base + +ENV NVIDIA_DRIVER_CAPABILITIES=video + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libvdpau1 libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig +ARG C_INCLUDE_PATH=/tmp/build/include/ffnvcodec + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libvdpau-dev libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev + +ARG FFMPEG_VERSION=4.1.3 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-vdpau \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/4.1/scratch/Dockerfile b/docker-images/4.1/scratch/Dockerfile index 746860572..c88708917 100644 --- a/docker-images/4.1/scratch/Dockerfile +++ b/docker-images/4.1/scratch/Dockerfile @@ -13,37 +13,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.1.3 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.1.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +68,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +78,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +169,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +343,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/4.1/ubuntu/Dockerfile b/docker-images/4.1/ubuntu/Dockerfile index 1c7e0ebed..c8ecfe3f5 100644 --- a/docker-images/4.1/ubuntu/Dockerfile +++ b/docker-images/4.1/ubuntu/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -5,7 +7,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +23,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.1.3 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.1.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +84,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +175,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +390,444 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM ubuntu:18.04 AS base + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libvdpau1 libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libvdpau-dev libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ + ninja-build \ + meson + +ARG FFMPEG_VERSION=4.1.3 +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} + +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-vdpau \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/4.1/vaapi/Dockerfile b/docker-images/4.1/vaapi/Dockerfile index 29e0e8d9d..d18059815 100644 --- a/docker-images/4.1/vaapi/Dockerfile +++ b/docker-images/4.1/vaapi/Dockerfile @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=4.1.3 \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=4.1.4 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -336,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/4.2/alpine/Dockerfile b/docker-images/4.2/alpine/Dockerfile new file mode 100644 index 000000000..cab0d57c1 --- /dev/null +++ b/docker-images/4.2/alpine/Dockerfile @@ -0,0 +1,390 @@ +# ffmpeg - http://ffmpeg.org/download.html +# +# https://hub.docker.com/r/jrottenberg/ffmpeg/ +# +# + +FROM alpine:3.8 AS base + +RUN apk add --no-cache --update libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 libgomp expat git + + +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=4.2.1 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ + OPENCOREAMR_VERSION=0.1.5 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ + X264_VERSION=20170226-2245-stable \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ + SRC=/usr/local + +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + + + +RUN buildDeps="autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev" && \ + apk add --no-cache --update ${buildDeps} +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=/tmp/opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.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 && \ + echo ${OGG_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${OPUS_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${VORBIS_SHA256SUM} | sha256sum --check && \ + 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} +### 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 && \ + echo ${THEORA_SHA256SUM} | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${THEORA_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-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs --disable-install-bins && \ + make && \ + make install && \ + rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=/tmp/lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ + echo ${XVID_SHA256SUM} | sha256sum --check && \ + 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 https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \ + echo ${FREETYPE_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBASS_SHA256SUM} | sha256sum --check && \ + 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} + +RUN \ + DIR=/tmp/aom && \ + git clone --branch ${AOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +## ffmpeg https://ffmpeg.org/ +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 + + + +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + ./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-libwebp \ + --enable-libx265 \ + --enable-libxvid \ + --enable-libx264 \ + --enable-nonfree \ + --enable-openssl \ + --enable-libfdk_aac \ + --enable-libkvazaar \ + --enable-libaom --extra-libs=-lpthread \ + --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 + +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 diff --git a/docker-images/4.2/centos/Dockerfile b/docker-images/4.2/centos/Dockerfile new file mode 100644 index 000000000..4274bdeb2 --- /dev/null +++ b/docker-images/4.2/centos/Dockerfile @@ -0,0 +1,390 @@ +# ffmpeg - http://ffmpeg.org/download.html +# +# From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos +# +# https://hub.docker.com/r/jrottenberg/ffmpeg/ +# +# +FROM centos:7 AS base + +RUN yum -y install libgomp && \ + yum clean all; + + +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=4.2.1 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ + OPENCOREAMR_VERSION=0.1.5 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ + X264_VERSION=20170226-2245-stable \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ + SRC=/usr/local + +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + + + +RUN buildDeps="autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel" && \ + echo "${SRC}/lib" > /etc/ld.so.conf.d/libc.conf && \ + yum --enablerepo=extras install -y epel-release && \ + yum install -y ${buildDeps} +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=/tmp/opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.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 && \ + echo ${OGG_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${OPUS_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${VORBIS_SHA256SUM} | sha256sum --check && \ + 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} +### 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 && \ + echo ${THEORA_SHA256SUM} | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${THEORA_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-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs --disable-install-bins && \ + make && \ + make install && \ + rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=/tmp/lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ + echo ${XVID_SHA256SUM} | sha256sum --check && \ + 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 https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \ + echo ${FREETYPE_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBASS_SHA256SUM} | sha256sum --check && \ + 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} + +RUN \ + DIR=/tmp/aom && \ + git clone --branch ${AOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +## ffmpeg https://ffmpeg.org/ +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 + + + +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + ./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-libwebp \ + --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/lib64/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib64 ffmpeg -buildconf + +FROM base +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +ENV LD_LIBRARY_PATH=/usr/local/lib64 + +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 \ No newline at end of file diff --git a/docker-images/4.2/nvidia/Dockerfile b/docker-images/4.2/nvidia/Dockerfile new file mode 100644 index 000000000..758fc1f08 --- /dev/null +++ b/docker-images/4.2/nvidia/Dockerfile @@ -0,0 +1,425 @@ +# ffmpeg - http://ffmpeg.org/download.html +# +# From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu +# +# https://hub.docker.com/r/jrottenberg/ffmpeg/ +# +# + +FROM nvidia/cudagl:9.2-devel-ubuntu18.04 AS devel-base + +ENV NVIDIA_DRIVER_CAPABILITIES compat32,compute,video +WORKDIR /tmp/workdir + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM nvidia/cudagl:9.2-runtime-ubuntu18.04 AS runtime-base + +ENV NVIDIA_DRIVER_CAPABILITIES compat32,compute,video +WORKDIR /tmp/workdir + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 libxcb-shape0-dev && \ + apt-get autoremove -y && \ + apt-get clean -y + + +FROM devel-base as build + +ENV NVIDIA_HEADERS_VERSION=8.1.24.9 +ARG PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig +ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" +ARG PREFIX=/opt/ffmpeg +ARG MAKEFLAGS="-j12" + +ENV FFMPEG_VERSION=4.2.1 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ + OPENCOREAMR_VERSION=0.1.5 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ + X264_VERSION=20170226-2245-stable \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ + SRC=/usr/local + +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + + + +RUN buildDeps="autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl-dev \ + yasm \ + zlib1g-dev" && \ + apt-get -yqq update && \ + apt-get install -yq --no-install-recommends ${buildDeps} + +RUN \ + DIR=/tmp/nv-codec-headers && \ + git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + git checkout n${NVIDIA_HEADERS_VERSION} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + 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://versaweb.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 && \ + echo ${OGG_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${OPUS_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${VORBIS_SHA256SUM} | sha256sum --check && \ + 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} +### 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 && \ + echo ${THEORA_SHA256SUM} | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${THEORA_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-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs --disable-install-bins && \ + make && \ + make install && \ + rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=/tmp/lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ + echo ${XVID_SHA256SUM} | sha256sum --check && \ + 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 https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \ + echo ${FREETYPE_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBASS_SHA256SUM} | sha256sum --check && \ + 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} + +RUN \ + DIR=/tmp/aom && \ + git clone --branch ${AOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +## ffmpeg https://ffmpeg.org/ +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 + + + +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-libnpp \ + --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-libwebp \ + --enable-libx265 \ + --enable-libxvid \ + --enable-libx264 \ + --enable-nonfree \ + --enable-openssl \ + --enable-libfdk_aac \ + --enable-libkvazaar \ + --enable-libaom --extra-libs=-lpthread \ + --enable-postproc \ + --enable-small \ + --enable-version3 \ + --extra-cflags="-I${PREFIX}/include -I${PREFIX}/include/ffnvcodec -I/usr/local/cuda/include/" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/cuda/lib64/ -L/usr/local/cuda/lib32/" \ + --extra-libs=-ldl \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +## cleanup +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 + + + +FROM runtime-base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] +ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" + +COPY --from=build /usr/local/bin /usr/local/bin/ +COPY --from=build /usr/local/share /usr/local/share/ +COPY --from=build /usr/local/lib /usr/local/lib/ + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output + diff --git a/docker-images/4.2/scratch/Dockerfile b/docker-images/4.2/scratch/Dockerfile new file mode 100644 index 000000000..08328c117 --- /dev/null +++ b/docker-images/4.2/scratch/Dockerfile @@ -0,0 +1,390 @@ +# ffmpeg - http://ffmpeg.org/download.html +# +# https://hub.docker.com/r/jrottenberg/ffmpeg/ +# +# + +FROM alpine:3.8 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=4.2.1 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ + OPENCOREAMR_VERSION=0.1.5 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ + X264_VERSION=20170226-2245-stable \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ + SRC=/usr/local + +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + + + +RUN buildDeps="autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + expat-dev \ + file \ + g++ \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + git" && \ + apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=/tmp/opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.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 && \ + echo ${OGG_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${OPUS_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${VORBIS_SHA256SUM} | sha256sum --check && \ + 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} +### 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 && \ + echo ${THEORA_SHA256SUM} | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${THEORA_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-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs --disable-install-bins && \ + make && \ + make install && \ + rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=/tmp/lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ + echo ${XVID_SHA256SUM} | sha256sum --check && \ + 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 https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \ + echo ${FREETYPE_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBASS_SHA256SUM} | sha256sum --check && \ + 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} + +RUN \ + DIR=/tmp/aom && \ + git clone --branch ${AOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +## ffmpeg https://ffmpeg.org/ +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 + + + +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + ./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-libwebp \ + --enable-libx265 \ + --enable-libxvid \ + --enable-libx264 \ + --enable-nonfree \ + --enable-openssl \ + --enable-libfdk_aac \ + --enable-libkvazaar \ + --enable-libaom --extra-libs=-lpthread \ + --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 \ + mkdir -p /tmp/fakeroot/lib && \ + ldd ${PREFIX}/bin/ffmpeg | cut -d ' ' -f 3 | strings | xargs -I R cp R /tmp/fakeroot/lib/ && \ + for lib in /tmp/fakeroot/lib/*; do strip --strip-all $lib; done && \ + cp -r ${PREFIX}/bin /tmp/fakeroot/bin/ && \ + cp -r ${PREFIX}/share/ffmpeg /tmp/fakeroot/share/ && \ + LD_LIBRARY_PATH=/tmp/fakeroot/lib /tmp/fakeroot/bin/ffmpeg -buildconf + +### Release Stage +FROM scratch AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["/bin/ffmpeg"] + +COPY --from=build /tmp/fakeroot/ / + + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/4.2/ubuntu/Dockerfile b/docker-images/4.2/ubuntu/Dockerfile new file mode 100644 index 000000000..32013d6ac --- /dev/null +++ b/docker-images/4.2/ubuntu/Dockerfile @@ -0,0 +1,391 @@ +# ffmpeg - http://ffmpeg.org/download.html +# +# From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu +# +# https://hub.docker.com/r/jrottenberg/ffmpeg/ +# +# +FROM ubuntu:18.04 AS base + +WORKDIR /tmp/workdir + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +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=4.2.1 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ + OPENCOREAMR_VERSION=0.1.5 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ + X264_VERSION=20170226-2245-stable \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ + SRC=/usr/local + +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + + + +RUN buildDeps="autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl-dev \ + yasm \ + zlib1g-dev" && \ + apt-get -yqq update && \ + apt-get install -yq --no-install-recommends ${buildDeps} +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=/tmp/opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.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 && \ + echo ${OGG_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${OPUS_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${VORBIS_SHA256SUM} | sha256sum --check && \ + 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} +### 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 && \ + echo ${THEORA_SHA256SUM} | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${THEORA_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-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs --disable-install-bins && \ + make && \ + make install && \ + rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=/tmp/lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ + echo ${XVID_SHA256SUM} | sha256sum --check && \ + 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 https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \ + echo ${FREETYPE_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBASS_SHA256SUM} | sha256sum --check && \ + 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} + +RUN \ + DIR=/tmp/aom && \ + git clone --branch ${AOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +## ffmpeg https://ffmpeg.org/ +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 + + + +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + ./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-libwebp \ + --enable-libx265 \ + --enable-libxvid \ + --enable-libx264 \ + --enable-nonfree \ + --enable-openssl \ + --enable-libfdk_aac \ + --enable-libkvazaar \ + --enable-libaom --extra-libs=-lpthread \ + --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 + +## cleanup +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 + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] +ENV LD_LIBRARY_PATH=/usr/local/lib + +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 diff --git a/docker-images/4.2/vaapi/Dockerfile b/docker-images/4.2/vaapi/Dockerfile new file mode 100644 index 000000000..72f755690 --- /dev/null +++ b/docker-images/4.2/vaapi/Dockerfile @@ -0,0 +1,398 @@ +# ffmpeg - http://ffmpeg.org/download.html +# +# From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu +# +# https://hub.docker.com/r/jrottenberg/ffmpeg/ +# +# +FROM ubuntu:18.04 AS base + +WORKDIR /tmp/workdir + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +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=4.2.1 \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ + OPENCOREAMR_VERSION=0.1.5 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ + X264_VERSION=20170226-2245-stable \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ + SRC=/usr/local + +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + + + +RUN buildDeps="autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl-dev \ + yasm \ + libva-dev \ + zlib1g-dev" && \ + apt-get -yqq update && \ + apt-get install -yq --no-install-recommends ${buildDeps} +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=/tmp/opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.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 && \ + echo ${OGG_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${OPUS_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${VORBIS_SHA256SUM} | sha256sum --check && \ + 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} +### 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 && \ + echo ${THEORA_SHA256SUM} | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${THEORA_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-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs --disable-install-bins && \ + make && \ + make install && \ + rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=/tmp/lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ + echo ${XVID_SHA256SUM} | sha256sum --check && \ + 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 https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \ + echo ${FREETYPE_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \ + 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 && \ + echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \ + 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 &&\ + echo ${LIBASS_SHA256SUM} | sha256sum --check && \ + 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} + +RUN \ + DIR=/tmp/aom && \ + git clone --branch ${AOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +## ffmpeg https://ffmpeg.org/ +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 + + + +RUN \ + DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-vaapi \ + --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-libwebp \ + --enable-libx265 \ + --enable-libxvid \ + --enable-libx264 \ + --enable-nonfree \ + --enable-openssl \ + --enable-libfdk_aac \ + --enable-libkvazaar \ + --enable-libaom --extra-libs=-lpthread \ + --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 + +## cleanup +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 + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] +ENV LD_LIBRARY_PATH=/usr/local/lib + +COPY --from=build /usr/local /usr/local/ + +RUN \ + apt-get update -y && \ + apt-get install -y --no-install-recommends libva-drm2 libva2 i965-va-driver && \ + rm -rf /var/lib/apt/lists/* + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/snapshot/alpine/Dockerfile b/docker-images/snapshot/alpine/Dockerfile index 9995c30d1..5b1b42eb8 100644 --- a/docker-images/snapshot/alpine/Dockerfile +++ b/docker-images/snapshot/alpine/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # https://hub.docker.com/r/jrottenberg/ffmpeg/ @@ -18,37 +20,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=snapshot \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=snapshot \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -70,6 +74,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} @@ -78,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -169,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -332,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,3 +390,460 @@ 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 +======= +======= +>>>>>>> fix extra comma +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=snapshot +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 +ARG LIBDAV1D_VERSION=0.3.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +## dav1d https://code.videolan.org/videolan/dav1d +RUN \ + DIR=dav1d && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://code.videolan.org/videolan/dav1d/-/archive/${LIBDAV1D_VERSION}/dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + meson build --prefix ${PREFIX} --buildtype release && \ + ninja -C build install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-libdav1d \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/snapshot/arm32v7/Dockerfile b/docker-images/snapshot/arm32v7/Dockerfile new file mode 100644 index 000000000..625aa0b2d --- /dev/null +++ b/docker-images/snapshot/arm32v7/Dockerfile @@ -0,0 +1,453 @@ +FROM alpine:3.9 as base + +RUN apk add --no-cache --update libva \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apk add --no-cache --update libva-dev \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja + +ARG FFMPEG_VERSION=snapshot +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 +ARG LIBDAV1D_VERSION=0.3.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +## dav1d https://code.videolan.org/videolan/dav1d +RUN \ + DIR=dav1d && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://code.videolan.org/videolan/dav1d/-/archive/${LIBDAV1D_VERSION}/dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + meson build --prefix ${PREFIX} --buildtype release && \ + ninja -C build install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-libdav1d \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/* | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + + +FROM scratch AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["/bin/ffmpeg"] + +COPY --from=build /usr/local / +RUN test "scratch" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/docker-images/snapshot/centos/Dockerfile b/docker-images/snapshot/centos/Dockerfile index 231354327..7c2af0160 100644 --- a/docker-images/snapshot/centos/Dockerfile +++ b/docker-images/snapshot/centos/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos @@ -20,37 +22,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=snapshot \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=snapshot \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -79,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -170,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -333,6 +348,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -373,4 +389,497 @@ ENV LD_LIBRARY_PATH=/usr/local/lib64 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM centos:7 as base + +RUN yum -y install libva libgomp libuuid && \ + echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf && \ + echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig:/tmp/build/lib64/pkgconfig + +RUN yum --enablerepo=extras install -y epel-release && \ + yum install -y \ + libva-devel \ + autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel \ + libuuid-devel \ + libcurl-devel \ + xz-devel \ + libarchive-devel \ + python36 \ + python36-pip + +#Centos is missing recent version of CMake (>= 3.5) +RUN \ + DIR=/tmp/cmake && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz | \ + tar -zx --strip-components=1 && \ + ./bootstrap --system-libs --no-system-jsoncpp && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing recent version of nasm (>= 2.13) +RUN \ + DIR=/tmp/nasm && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="/usr" && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing ninja +RUN \ + DIR=/tmp/ninja && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/ninja-build/ninja/archive/v1.9.0.tar.gz | \ + tar -zx --strip-components=1 && \ + python configure.py --bootstrap && \ + cp ./ninja /usr/bin/ && \ + rm -rf ${DIR} + +RUN \ + DIR=/tmp/meson && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + pip3 install meson && \ + rm -rf ${DIR} + +ARG FFMPEG_VERSION=snapshot +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 +ARG LIBDAV1D_VERSION=0.3.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +## dav1d https://code.videolan.org/videolan/dav1d +RUN \ + DIR=dav1d && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://code.videolan.org/videolan/dav1d/-/archive/${LIBDAV1D_VERSION}/dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + meson build --prefix ${PREFIX} --buildtype release && \ + ninja -C build install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-libdav1d \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/snapshot/nvidia/Dockerfile b/docker-images/snapshot/nvidia/Dockerfile index 84d8ad4d1..05715d265 100644 --- a/docker-images/snapshot/nvidia/Dockerfile +++ b/docker-images/snapshot/nvidia/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -35,37 +37,39 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j12" -ENV FFMPEG_VERSION=snapshot \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=snapshot \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -105,7 +109,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -196,12 +200,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -363,6 +378,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -409,3 +425,454 @@ COPY --from=build /usr/local/lib /usr/local/lib/ # Let's make sure the app built correctly # Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> fix extra comma +FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS base + +ENV NVIDIA_DRIVER_CAPABILITIES=video + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig +ARG C_INCLUDE_PATH=/tmp/build/include/ffnvcodec + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev + +ARG FFMPEG_VERSION=snapshot +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 +ARG LIBDAV1D_VERSION=0.3.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +## dav1d https://code.videolan.org/videolan/dav1d +RUN \ + DIR=dav1d && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://code.videolan.org/videolan/dav1d/-/archive/${LIBDAV1D_VERSION}/dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + meson build --prefix ${PREFIX} --buildtype release && \ + ninja -C build install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-libdav1d \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma diff --git a/docker-images/snapshot/scratch/Dockerfile b/docker-images/snapshot/scratch/Dockerfile index 0e70f0159..85d963184 100644 --- a/docker-images/snapshot/scratch/Dockerfile +++ b/docker-images/snapshot/scratch/Dockerfile @@ -13,37 +13,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=snapshot \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=snapshot \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -66,6 +68,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 @@ -75,7 +78,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -166,12 +169,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -329,6 +343,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker-images/snapshot/ubuntu/Dockerfile b/docker-images/snapshot/ubuntu/Dockerfile index 62e942a28..ebf591472 100644 --- a/docker-images/snapshot/ubuntu/Dockerfile +++ b/docker-images/snapshot/ubuntu/Dockerfile @@ -1,3 +1,5 @@ +<<<<<<< HEAD +<<<<<<< HEAD # ffmpeg - http://ffmpeg.org/download.html # # From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu @@ -5,7 +7,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -21,37 +23,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=snapshot \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=snapshot \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -80,7 +84,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -171,12 +175,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -334,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ @@ -374,4 +390,454 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +======= +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +FROM ubuntu:18.04 AS base + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends libva2 libva-drm2 i965-va-driver ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=/tmp/build +ARG MAKEFLAGS=-j6 +ARG PKG_CONFIG_PATH=/tmp/build/lib/pkgconfig + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + libva-dev \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ + ninja-build \ + meson + +ARG FFMPEG_VERSION=snapshot +ARG LIBOPENCORE_AMR_VERSION=0.1.5 +ARG LIBX264_VERSION=20190526-2245-stable +ARG LIBX265_VERSION=3.0 +ARG LIBOGG_VERSION=1.3.3 +ARG LIBOPUS_VERSION=1.3.1 +ARG LIBVORBIS_VERSION=1.3.6 +ARG LIBTHEORA_VERSION=1.1.1 +ARG LIBVPX_VERSION=1.8.0 +ARG LIBMP3LAME_VERSION=3.100 +ARG LIBXVID_VERSION=1.3.5 +ARG LIBFDK_AAC_VERSION=2.0.0 +ARG LIBOPENJPEG_VERSION=2.3.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBVIDSTAB_VERSION=1.1.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBFREETYPE_VERSION=2.10.0 +ARG LIBFRIBIDI_VERSION=0.19.7 +ARG LIBFONTCONFIG_VERSION=2.13.1 +ARG LIBASS_VERSION=0.14.0 +ARG LIBKVAZAAR_VERSION=1.2.0 +ARG LIBAOM_VERSION=1.0.0-errata1 +ARG NVENC_VERSION=9.0.18.1 +ARG LIBDAV1D_VERSION=0.3.1 + +ARG LIBOGG_SHA256SUM=c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 +ARG LIBOPUS_SHA256SUM=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +ARG LIBVORBIS_SHA256SUM=6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +ARG LIBTHEORA_SHA256SUM=40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +ARG LIBVIDSTAB_SHA256SUM=14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 +ARG LIBFRIBIDI_SHA256SUM=3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_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=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_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=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} + +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_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=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_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=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_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=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + 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=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=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=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} + +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} +## dav1d https://code.videolan.org/videolan/dav1d +RUN \ + DIR=dav1d && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://code.videolan.org/videolan/dav1d/-/archive/${LIBDAV1D_VERSION}/dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + meson build --prefix ${PREFIX} --buildtype release && \ + ninja -C build install && \ + rm -rf ${DIR} +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + --enable-libopencore-amrnb \ + --enable-libopencore-amrwb \ + --enable-version3 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libtheora \ + --enable-libvpx \ + --enable-libmp3lame \ + --enable-libxvid \ + --enable-libfdk_aac \ + --enable-nonfree \ + --enable-libopenjpeg \ + --enable-libfreetype \ + --enable-libvidstab \ + --enable-gpl \ + --enable-libass \ + --enable-libkvazaar \ + --enable-libaom \ + --extra-libs=-lpthread \ + --enable-vaapi \ + --enable-cuda \ + --enable-nvenc \ + --enable-cuvid \ + --enable-libdav1d \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin + +RUN \ + if false; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if true; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf + +FROM base AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["ffmpeg"] + +COPY --from=build /usr/local /usr/local +RUN test "base" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output +<<<<<<< HEAD +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d diff --git a/docker-images/snapshot/vaapi/Dockerfile b/docker-images/snapshot/vaapi/Dockerfile index 6c0966c55..58d5ca86f 100644 --- a/docker-images/snapshot/vaapi/Dockerfile +++ b/docker-images/snapshot/vaapi/Dockerfile @@ -21,37 +21,39 @@ ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib ARG PREFIX=/opt/ffmpeg ARG MAKEFLAGS="-j2" -ENV FFMPEG_VERSION=snapshot \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +ENV FFMPEG_VERSION=snapshot \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + RUN buildDeps="autoconf \ @@ -81,7 +83,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -172,12 +174,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -336,6 +349,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/docker_gen.sh b/docker_gen.sh new file mode 100644 index 000000000..9e45ef55a --- /dev/null +++ b/docker_gen.sh @@ -0,0 +1,60 @@ +#! /bin/sh + +<<<<<<< HEAD +<<<<<<< HEAD +variants=("ubuntu" "centos" "alpine" "nvidia" "arm32v7") +versions=("2.8" "3.2" "3.3" "3.4" "4.0" "4.1" "snapshot") + +for variant in ${variants[*]}; do + for version in ${versions[*]}; do +======= +variants=("ubuntu" "centos" "alpine", "nvidia", "arm32v7") +versions=("2.8" "3.2" "3.3" "3.4" "4.0" "4.1" "snapshot") + +for variant in ${variants[*]}; do + for version in ${versions[*]}; do +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +variants=("ubuntu" "centos" "alpine" "nvidia" "arm32v7") +versions=("2.8" "3.2" "3.3" "3.4" "4.0" "4.1" "snapshot") + +for variant in ${variants[*]}; do + for version in ${versions[*]}; do +>>>>>>> fix extra comma + echo "${variant}: ffmpeg-${version}" + dir="docker-images/${version}/${variant}" + mkdir -p ${dir} + python3 update.py --slim --enable-all ${variant} ${version} > ${dir}/Dockerfile + done +done + +scratch_variant="alpine" +<<<<<<< HEAD +<<<<<<< HEAD +for version in ${versions[*]}; do +======= +for version in ${versions[*]}; do +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= +for version in ${versions[*]}; do +>>>>>>> fix extra comma + dir="docker-images/${version}/${variant}" + mkdir -p ${dir} + python3 update.py --scratch --enable-all ${scratch_variant} ${version} > ${dir}/Dockerfile +done + +# FFMPEG 2.8 Patches +# FFMPEG requires libssl1.0 +sed -ri\ + -e 's/alpine:[[:digit:]]+.[[:digit:]]+/alpine:3.8/' \ + -e 's/libssl1.[[:digit:]]/libssl1.0/' \ + -e 's/libcrypto1.[[:digit:]]/libcrypto1.0/' \ +<<<<<<< HEAD +<<<<<<< HEAD + docker-images/2.8/alpine/Dockerfile +======= + docker-images/2.8/alpine/Dockerfile +>>>>>>> rewrite the dockerfile generation + vdapu + armv7 + dav1d +======= + docker-images/2.8/alpine/Dockerfile +>>>>>>> fix extra comma diff --git a/templates/Dockerfile-env b/templates/Dockerfile-env index 4da6fa0bf..5771e5d89 100644 --- a/templates/Dockerfile-env +++ b/templates/Dockerfile-env @@ -1,31 +1,33 @@ -FFMPEG_VERSION=%%FFMPEG_VERSION%% \ - FDKAAC_VERSION=0.1.5 \ - LAME_VERSION=3.100 \ - LIBASS_VERSION=0.13.7 \ - OGG_VERSION=1.3.2 \ +FFMPEG_VERSION=%%FFMPEG_VERSION%% \ + AOM_VERSION=v1.0.0 \ + FDKAAC_VERSION=0.1.5 \ + FONTCONFIG_VERSION=2.12.4 \ + FREETYPE_VERSION=2.5.5 \ + FRIBIDI_VERSION=0.19.7 \ + KVAZAAR_VERSION=1.2.0 \ + LAME_VERSION=3.100 \ + LIBASS_VERSION=0.13.7 \ + LIBVIDSTAB_VERSION=1.1.0 \ + OGG_VERSION=1.3.2 \ OPENCOREAMR_VERSION=0.1.5 \ - OPUS_VERSION=1.2 \ - OPENJPEG_VERSION=2.1.2 \ - THEORA_VERSION=1.1.1 \ - VORBIS_VERSION=1.3.5 \ - VPX_VERSION=1.8.0 \ + OPUS_VERSION=1.2 \ + OPENJPEG_VERSION=2.1.2 \ + THEORA_VERSION=1.1.1 \ + VORBIS_VERSION=1.3.5 \ + VPX_VERSION=1.8.0 \ + WEBP_VERSION=1.0.2 \ 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 \ - AOM_VERSION=v1.0.0 \ + X265_VERSION=3.1.1 \ + XVID_VERSION=1.3.4 \ SRC=/usr/local -ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" -ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" -ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" -ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" -ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" -ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" -ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" -ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" -ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz" +ARG FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz" +ARG LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz" +ARG LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz" +ARG OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz" +ARG OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz" +ARG THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz" +ARG VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz" +ARG XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz" + diff --git a/templates/Dockerfile-run b/templates/Dockerfile-run index 31fe08a6d..6ba368990 100644 --- a/templates/Dockerfile-run +++ b/templates/Dockerfile-run @@ -3,7 +3,7 @@ RUN \ DIR=/tmp/opencore-amr && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \ + curl -sL https://versaweb.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 && \ @@ -94,12 +94,23 @@ RUN \ make && \ make install && \ rm -rf ${DIR} +### libwebp https://developers.google.com/speed/webp/ +RUN \ + DIR=/tmp/vebp && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} ### libmp3lame http://lame.sourceforge.net/ RUN \ DIR=/tmp/lame && \ mkdir -p ${DIR} && \ cd ${DIR} && \ - curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LAME_VERSION}.tar.gz | \ + curl -sL https://versaweb.dl.sourceforge.net/project/lame/lame/$(echo ${LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/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 && \ @@ -257,6 +268,7 @@ RUN \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ + --enable-libwebp \ --enable-libx265 \ --enable-libxvid \ --enable-libx264 \ diff --git a/templates/Dockerfile-template.alpine b/templates/Dockerfile-template.alpine index 6b309db3f..a28e57125 100644 --- a/templates/Dockerfile-template.alpine +++ b/templates/Dockerfile-template.alpine @@ -39,6 +39,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ expat-dev" && \ apk add --no-cache --update ${buildDeps} diff --git a/templates/Dockerfile-template.centos b/templates/Dockerfile-template.centos deleted file mode 100644 index 04ffaccf3..000000000 --- a/templates/Dockerfile-template.centos +++ /dev/null @@ -1,64 +0,0 @@ -# ffmpeg - http://ffmpeg.org/download.html -# -# From https://trac.ffmpeg.org/wiki/CompilationGuide/Centos -# -# https://hub.docker.com/r/jrottenberg/ffmpeg/ -# -# -FROM centos:7 AS base - -RUN yum -y install libgomp && \ - yum clean all; - - -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 %%ENV%% - -RUN buildDeps="autoconf \ - automake \ - bzip2 \ - cmake \ - expat-devel \ - gcc \ - gcc-c++ \ - git \ - gperf \ - libtool \ - make \ - nasm \ - perl \ - openssl-devel \ - tar \ - yasm \ - which \ - zlib-devel" && \ - echo "${SRC}/lib" > /etc/ld.so.conf.d/libc.conf && \ - yum --enablerepo=extras install -y epel-release && \ - yum install -y ${buildDeps} -%%RUN%% -RUN \ - ldd ${PREFIX}/bin/ffmpeg | grep opt/ffmpeg | cut -d ' ' -f 3 | xargs -i cp {} /usr/local/lib64/ && \ - cp ${PREFIX}/bin/* /usr/local/bin/ && \ - cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ - LD_LIBRARY_PATH=/usr/local/lib64 ffmpeg -buildconf - -FROM base -MAINTAINER Julien Rottenberg - -CMD ["--help"] -ENTRYPOINT ["ffmpeg"] - -ENV LD_LIBRARY_PATH=/usr/local/lib64 - -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 \ No newline at end of file diff --git a/templates/Dockerfile-template.nvidia b/templates/Dockerfile-template.nvidia deleted file mode 100644 index 5938d9908..000000000 --- a/templates/Dockerfile-template.nvidia +++ /dev/null @@ -1,95 +0,0 @@ -# ffmpeg - http://ffmpeg.org/download.html -# -# From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu -# -# https://hub.docker.com/r/jrottenberg/ffmpeg/ -# -# - -FROM nvidia/cudagl:9.2-devel-ubuntu18.04 AS devel-base - -ENV NVIDIA_DRIVER_CAPABILITIES compat32,compute,video -WORKDIR /tmp/workdir - -RUN apt-get -yqq update && \ - apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 && \ - apt-get autoremove -y && \ - apt-get clean -y - -FROM nvidia/cudagl:9.2-runtime-ubuntu18.04 AS runtime-base - -ENV NVIDIA_DRIVER_CAPABILITIES compat32,compute,video -WORKDIR /tmp/workdir - -RUN apt-get -yqq update && \ - apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 libxcb-shape0-dev && \ - apt-get autoremove -y && \ - apt-get clean -y - - -FROM devel-base as build - -ENV NVIDIA_HEADERS_VERSION=8.1.24.9 -ARG PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig -ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ffmpeg/lib" -ARG PREFIX=/opt/ffmpeg -ARG MAKEFLAGS="-j12" - -ENV %%ENV%% - -RUN buildDeps="autoconf \ - automake \ - cmake \ - curl \ - bzip2 \ - libexpat1-dev \ - g++ \ - gcc \ - git \ - gperf \ - libtool \ - make \ - nasm \ - perl \ - pkg-config \ - python \ - libssl-dev \ - yasm \ - zlib1g-dev" && \ - apt-get -yqq update && \ - apt-get install -yq --no-install-recommends ${buildDeps} - -RUN \ - DIR=/tmp/nv-codec-headers && \ - git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ - cd ${DIR} && \ - git checkout n${NVIDIA_HEADERS_VERSION} && \ - sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ - make && \ - make install && \ - rm -rf ${DIR} - -%%RUN%% -## cleanup -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 - - - -FROM runtime-base AS release -MAINTAINER Julien Rottenberg - -CMD ["--help"] -ENTRYPOINT ["ffmpeg"] -ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" - -COPY --from=build /usr/local/bin /usr/local/bin/ -COPY --from=build /usr/local/share /usr/local/share/ -COPY --from=build /usr/local/lib /usr/local/lib/ - -# Let's make sure the app built correctly -# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output - diff --git a/templates/Dockerfile-template.scratch b/templates/Dockerfile-template.scratch index 494237f12..676d5e9b0 100644 --- a/templates/Dockerfile-template.scratch +++ b/templates/Dockerfile-template.scratch @@ -35,6 +35,7 @@ RUN buildDeps="autoconf \ openssl-dev \ tar \ yasm \ + nasm \ zlib-dev \ git" && \ apk add --update ${buildDeps} libgcc libstdc++ ca-certificates libcrypto1.0 libssl1.0 diff --git a/templates/Dockerfile-template.ubuntu b/templates/Dockerfile-template.ubuntu index 3aa59439e..5b99fe043 100644 --- a/templates/Dockerfile-template.ubuntu +++ b/templates/Dockerfile-template.ubuntu @@ -5,7 +5,7 @@ # https://hub.docker.com/r/jrottenberg/ffmpeg/ # # -FROM ubuntu:16.04 AS base +FROM ubuntu:18.04 AS base WORKDIR /tmp/workdir @@ -62,4 +62,4 @@ ENV LD_LIBRARY_PATH=/usr/local/lib 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 \ No newline at end of file +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/templates/Dockerfile-template.vaapi b/templates/Dockerfile-template.vaapi deleted file mode 100644 index ccd06f5c2..000000000 --- a/templates/Dockerfile-template.vaapi +++ /dev/null @@ -1,71 +0,0 @@ -# ffmpeg - http://ffmpeg.org/download.html -# -# From https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu -# -# https://hub.docker.com/r/jrottenberg/ffmpeg/ -# -# -FROM ubuntu:18.04 AS base - -WORKDIR /tmp/workdir - -RUN apt-get -yqq update && \ - apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 && \ - apt-get autoremove -y && \ - apt-get clean -y - -FROM base as build - -ARG PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig -ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib -ARG PREFIX=/opt/ffmpeg -ARG MAKEFLAGS="-j2" - -ENV %%ENV%% - -RUN buildDeps="autoconf \ - automake \ - cmake \ - curl \ - bzip2 \ - libexpat1-dev \ - g++ \ - gcc \ - git \ - gperf \ - libtool \ - make \ - nasm \ - perl \ - pkg-config \ - python \ - libssl-dev \ - yasm \ - libva-dev \ - zlib1g-dev" && \ - apt-get -yqq update && \ - apt-get install -yq --no-install-recommends ${buildDeps} -%%RUN%% -## cleanup -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 - -FROM base AS release -MAINTAINER Julien Rottenberg - -CMD ["--help"] -ENTRYPOINT ["ffmpeg"] -ENV LD_LIBRARY_PATH=/usr/local/lib - -COPY --from=build /usr/local /usr/local/ - -RUN \ - apt-get update -y && \ - apt-get install -y --no-install-recommends libva-drm2 libva2 i965-va-driver && \ - rm -rf /var/lib/apt/lists/* - -# Let's make sure the app built correctly -# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output diff --git a/templates/azure.template b/templates/azure.template index 9f6991ba4..8d146bc58 100644 --- a/templates/azure.template +++ b/templates/azure.template @@ -1,3 +1,8 @@ +variables: +- group: videotoolsbuild-dockerhub +- name: DOCKER + value: jrottenberg/ffmpeg + jobs: - job: Build pool: @@ -7,6 +12,14 @@ jobs: matrix: %%VERSIONS%% steps: - - script: | - docker build -t ffmpeg:${VERSION}-${VARIANT} --build-arg MAKEFLAGS="-j$(($(grep -c ^processor /proc/cpuinfo) + 1))" docker-images/${VERSION}/${VARIANT} - docker run --rm ffmpeg:${VERSION}-${VARIANT} -buildconf + - bash: | + docker build -t ${DOCKER}:${VERSION}-${VARIANT} --build-arg MAKEFLAGS="-j$(($(grep -c ^processor /proc/cpuinfo) + 1))" docker-images/${VERSION}/${VARIANT} + docker run --rm ${DOCKER}:${VERSION}-${VARIANT} -buildconf + displayName: Build docker image + - bash: | + docker login --username ${DOCKER_LOGIN} --password ${DOCKER_PASSWORD} + docker push ${DOCKER}:${VERSION}-${VARIANT} + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) + displayName: Push docker image + env: + DOCKER_PASSWORD: $(docker.password) \ No newline at end of file diff --git a/templates/common/fat b/templates/common/fat new file mode 100644 index 000000000..c42cffabd --- /dev/null +++ b/templates/common/fat @@ -0,0 +1,4 @@ + +RUN \ + cp -r ${PREFIX}/* /usr/local && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf diff --git a/templates/common/release b/templates/common/release new file mode 100644 index 000000000..25f32d312 --- /dev/null +++ b/templates/common/release @@ -0,0 +1,12 @@ + +FROM $source AS release +MAINTAINER Julien Rottenberg + +CMD ["--help"] +ENTRYPOINT ["$entrypoint"] + +COPY --from=build /usr/local $install_dir +RUN test "$source" = "base" && ldconfig /usr/local/lib /usr/local/lib64 + +# Let's make sure the app built correctly +# Convenient to verify on https://hub.docker.com/r/jrottenberg/ffmpeg/builds/ console output \ No newline at end of file diff --git a/templates/common/scratch b/templates/common/scratch new file mode 100644 index 000000000..90f23c615 --- /dev/null +++ b/templates/common/scratch @@ -0,0 +1,19 @@ + +RUN \ + if $bins; then \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/* | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + cut -d ' ' -f 3 | \ + strings | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if $strip; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf diff --git a/templates/common/slim b/templates/common/slim new file mode 100644 index 000000000..0a77506f7 --- /dev/null +++ b/templates/common/slim @@ -0,0 +1,17 @@ + +RUN \ + if $bins; then \ + cp -r ${PREFIX}/lib/*so* /usr/local/lib/ && \ + cp ${PREFIX}/bin/* /usr/local/bin/ ; \ + else \ + LD_LIBRARY_PATH=${PREFIX}/lib ldd ${PREFIX}/bin/ffmpeg | \ + grep ${PREFIX} | \ + cut -d ' ' -f 3 | \ + xargs -i cp {} /usr/local/lib/ && \ + cp ${PREFIX}/bin/ff* /usr/local/bin/ ; \ + fi && \ + if $strip; then \ + for lib in /usr/local/lib/*.so* /usr/local/bin/*; do strip --strip-all $lib; done ; \ + fi && \ + cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \ + LD_LIBRARY_PATH=/usr/local/lib ffmpeg -buildconf \ No newline at end of file diff --git a/templates/config/config_2.8.ini b/templates/config/config_2.8.ini new file mode 100644 index 000000000..93e4a0ba0 --- /dev/null +++ b/templates/config/config_2.8.ini @@ -0,0 +1,90 @@ +[ffmpeg] +Version = 2.8.15 + +[libass] +Version = 0.14.0 +DependsOn = libfreetype, libfribidi, libfontconfig +Flags = --enable-libass + +[libfdk-aac] +Version = 0.1.6 +Flags = --enable-libfdk_aac, --enable-nonfree + +[libfontconfig] +Version = 2.13.1 + +[libfreetype] +Version = 2.10.0 +Flags = --enable-libfreetype + +[libfribidi] +Version = 0.19.7 +SHA256sum = 3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +[libkvazaar] +Version = 0.6.1 +Flags = --enable-libkvazaar + +[libmp3lame] +Version = 3.100 +Flags = --enable-libmp3lame + +[libogg] +Version = 1.3.3 +SHA256sum = c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 + +[libopencore-amr] +Version = 0.1.5 +Flags = --enable-libopencore-amrnb, --enable-libopencore-amrwb, --enable-version3 + +[libopenjpeg] +Version = 1.5.2 +Flags = --enable-libopenjpeg + +[libopus] +Version = 1.3.1 +SHA256sum = 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +Flags = --enable-libopus + +[libtheora] +Version = 1.1.1 +SHA256sum = 40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +DependsOn = libogg +Flags = --enable-libtheora + +[libvidstab] +Version = 1.1.0 +SHA256sum = 14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +Flags = --enable-libvidstab, --enable-gpl + +[libvorbis] +Version = 1.3.6 +SHA256sum = 6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +DependsOn = libogg +Flags = --enable-libvorbis + +[libvpx] +Version = 1.8.0 +Flags = --enable-libvpx + +[libx264] +Version = 20190526-2245-stable +Flags = --enable-libx264 + +[libx265] +Version = 3.0 +Flags = --enable-libx265 + +[libxvid] +Version = 1.3.5 +Flags = --enable-libxvid + +[vaapi] +Flags = --enable-vaapi +Install = libva +InstallDev = libva-dev + +[nvenc] +Version=8.2.15.8 +Flags = --enable-nvenc, --enable-nonfree +Variants = nvidia \ No newline at end of file diff --git a/templates/config/config_3.2.ini b/templates/config/config_3.2.ini new file mode 100644 index 000000000..15d3972f7 --- /dev/null +++ b/templates/config/config_3.2.ini @@ -0,0 +1,90 @@ +[ffmpeg] +Version = 3.2.14 + +[libass] +Version = 0.14.0 +DependsOn = libfreetype, libfribidi, libfontconfig +Flags = --enable-libass + +[libfdk-aac] +Version = 0.1.6 +Flags = --enable-libfdk_aac, --enable-nonfree + +[libfontconfig] +Version = 2.13.1 + +[libfreetype] +Version = 2.10.0 +Flags = --enable-libfreetype + +[libfribidi] +Version = 0.19.7 +SHA256sum = 3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +[libkvazaar] +Version = 1.2.0 +Flags = --enable-libkvazaar + +[libmp3lame] +Version = 3.100 +Flags = --enable-libmp3lame + +[libogg] +Version = 1.3.3 +SHA256sum = c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 + +[libopencore-amr] +Version = 0.1.5 +Flags = --enable-libopencore-amrnb, --enable-libopencore-amrwb, --enable-version3 + +[libopenjpeg] +Version = 2.1.2 +Flags = --enable-libopenjpeg + +[libopus] +Version = 1.3.1 +SHA256sum = 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +Flags = --enable-libopus + +[libtheora] +Version = 1.1.1 +SHA256sum = 40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +DependsOn = libogg +Flags = --enable-libtheora + +[libvidstab] +Version = 1.1.0 +SHA256sum = 14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +Flags = --enable-libvidstab, --enable-gpl + +[libvorbis] +Version = 1.3.6 +SHA256sum = 6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +DependsOn = libogg +Flags = --enable-libvorbis + +[libvpx] +Version = 1.8.0 +Flags = --enable-libvpx + +[libx264] +Version = 20190526-2245-stable +Flags = --enable-libx264 + +[libx265] +Version = 3.0 +Flags = --enable-libx265 + +[libxvid] +Version = 1.3.5 +Flags = --enable-libxvid + +[vaapi] +Flags = --enable-vaapi +Install = libva +InstallDev = libva-dev + +[nvenc] +Version=9.0.18.1 +Flags = --enable-nvenc, --enable-nonfree +Variants = nvidia \ No newline at end of file diff --git a/templates/config/config_3.3.ini b/templates/config/config_3.3.ini new file mode 100644 index 000000000..8f80f2de5 --- /dev/null +++ b/templates/config/config_3.3.ini @@ -0,0 +1,90 @@ +[ffmpeg] +Version = 3.3.9 + +[libass] +Version = 0.14.0 +DependsOn = libfreetype, libfribidi, libfontconfig +Flags = --enable-libass + +[libfdk-aac] +Version = 0.1.6 +Flags = --enable-libfdk_aac, --enable-nonfree + +[libfontconfig] +Version = 2.13.1 + +[libfreetype] +Version = 2.10.0 +Flags = --enable-libfreetype + +[libfribidi] +Version = 0.19.7 +SHA256sum = 3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +[libkvazaar] +Version = 1.2.0 +Flags = --enable-libkvazaar + +[libmp3lame] +Version = 3.100 +Flags = --enable-libmp3lame + +[libogg] +Version = 1.3.3 +SHA256sum = c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 + +[libopencore-amr] +Version = 0.1.5 +Flags = --enable-libopencore-amrnb, --enable-libopencore-amrwb, --enable-version3 + +[libopenjpeg] +Version = 2.1.2 +Flags = --enable-libopenjpeg + +[libopus] +Version = 1.3.1 +SHA256sum = 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +Flags = --enable-libopus + +[libtheora] +Version = 1.1.1 +SHA256sum = 40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +DependsOn = libogg +Flags = --enable-libtheora + +[libvidstab] +Version = 1.1.0 +SHA256sum = 14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +Flags = --enable-libvidstab, --enable-gpl + +[libvorbis] +Version = 1.3.6 +SHA256sum = 6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +DependsOn = libogg +Flags = --enable-libvorbis + +[libvpx] +Version = 1.8.0 +Flags = --enable-libvpx + +[libx264] +Version = 20190526-2245-stable +Flags = --enable-libx264 + +[libx265] +Version = 3.0 +Flags = --enable-libx265 + +[libxvid] +Version = 1.3.5 +Flags = --enable-libxvid + +[vaapi] +Flags = --enable-vaapi +Install = libva +InstallDev = libva-dev + +[nvenc] +Version=9.0.18.1 +Flags = --enable-cuda, --enable-nvenc, --enable-cuvid +Variants = nvidia \ No newline at end of file diff --git a/templates/config/config_3.4.ini b/templates/config/config_3.4.ini new file mode 100644 index 000000000..8a523291b --- /dev/null +++ b/templates/config/config_3.4.ini @@ -0,0 +1,90 @@ +[ffmpeg] +Version = 3.4.6 + +[libass] +Version = 0.14.0 +DependsOn = libfreetype, libfribidi, libfontconfig +Flags = --enable-libass + +[libfdk-aac] +Version = 0.1.6 +Flags = --enable-libfdk_aac, --enable-nonfree + +[libfontconfig] +Version = 2.13.1 + +[libfreetype] +Version = 2.10.0 +Flags = --enable-libfreetype + +[libfribidi] +Version = 0.19.7 +SHA256sum = 3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +[libkvazaar] +Version = 1.2.0 +Flags = --enable-libkvazaar + +[libmp3lame] +Version = 3.100 +Flags = --enable-libmp3lame + +[libogg] +Version = 1.3.3 +SHA256sum = c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 + +[libopencore-amr] +Version = 0.1.5 +Flags = --enable-libopencore-amrnb, --enable-libopencore-amrwb, --enable-version3 + +[libopenjpeg] +Version = 2.1.2 +Flags = --enable-libopenjpeg + +[libopus] +Version = 1.3.1 +SHA256sum = 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +Flags = --enable-libopus + +[libtheora] +Version = 1.1.1 +SHA256sum = 40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +DependsOn = libogg +Flags = --enable-libtheora + +[libvidstab] +Version = 1.1.0 +SHA256sum = 14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +Flags = --enable-libvidstab, --enable-gpl + +[libvorbis] +Version = 1.3.6 +SHA256sum = 6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +DependsOn = libogg +Flags = --enable-libvorbis + +[libvpx] +Version = 1.8.0 +Flags = --enable-libvpx + +[libx264] +Version = 20190526-2245-stable +Flags = --enable-libx264 + +[libx265] +Version = 3.0 +Flags = --enable-libx265 + +[libxvid] +Version = 1.3.5 +Flags = --enable-libxvid + +[vaapi] +Flags = --enable-vaapi +Install = libva +InstallDev = libva-dev + +[nvenc] +Version=9.0.18.1 +Flags = --enable-cuda, --enable-nvenc, --enable-cuvid +Variants = nvidia \ No newline at end of file diff --git a/templates/config/config_4.0.ini b/templates/config/config_4.0.ini new file mode 100644 index 000000000..29bc3ec9d --- /dev/null +++ b/templates/config/config_4.0.ini @@ -0,0 +1,94 @@ +[ffmpeg] +Version = 4.0.4 + +[libaom] +Version = 1.0.0-errata1 +Flags = --enable-libaom, --extra-libs=-lpthread + +[libass] +Version = 0.14.0 +DependsOn = libfreetype, libfribidi, libfontconfig +Flags = --enable-libass + +[libfdk-aac] +Version = 0.1.6 +Flags = --enable-libfdk_aac, --enable-nonfree + +[libfontconfig] +Version = 2.13.1 + +[libfreetype] +Version = 2.10.0 +Flags = --enable-libfreetype + +[libfribidi] +Version = 0.19.7 +SHA256sum = 3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +[libkvazaar] +Version = 1.2.0 +Flags = --enable-libkvazaar + +[libmp3lame] +Version = 3.100 +Flags = --enable-libmp3lame + +[libogg] +Version = 1.3.3 +SHA256sum = c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 + +[libopencore-amr] +Version = 0.1.5 +Flags = --enable-libopencore-amrnb, --enable-libopencore-amrwb, --enable-version3 + +[libopenjpeg] +Version = 2.3.1 +Flags = --enable-libopenjpeg + +[libopus] +Version = 1.3.1 +SHA256sum = 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +Flags = --enable-libopus + +[libtheora] +Version = 1.1.1 +SHA256sum = 40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +DependsOn = libogg +Flags = --enable-libtheora + +[libvidstab] +Version = 1.1.0 +SHA256sum = 14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +Flags = --enable-libvidstab, --enable-gpl + +[libvorbis] +Version = 1.3.6 +SHA256sum = 6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +DependsOn = libogg +Flags = --enable-libvorbis + +[libvpx] +Version = 1.8.0 +Flags = --enable-libvpx + +[libx264] +Version = 20190526-2245-stable +Flags = --enable-libx264 + +[libx265] +Version = 3.0 +Flags = --enable-libx265 + +[libxvid] +Version = 1.3.5 +Flags = --enable-libxvid + +[vaapi] +Flags = --enable-vaapi +Install = libva +InstallDev = libva-dev + +[nvenc] +Version=9.0.18.1 +Flags = --enable-cuda, --enable-nvenc, --enable-cuvid +Variants = nvidia \ No newline at end of file diff --git a/templates/config/config_4.1.ini b/templates/config/config_4.1.ini new file mode 100644 index 000000000..a06710c89 --- /dev/null +++ b/templates/config/config_4.1.ini @@ -0,0 +1,99 @@ +[ffmpeg] +Version = 4.1.3 + +[libaom] +Version = 1.0.0-errata1 +Flags = --enable-libaom, --extra-libs=-lpthread + +[libass] +Version = 0.14.0 +DependsOn = libfreetype, libfribidi, libfontconfig +Flags = --enable-libass + +[libfdk-aac] +Version = 2.0.0 +Flags = --enable-libfdk_aac, --enable-nonfree + +[libfontconfig] +Version = 2.13.1 + +[libfreetype] +Version = 2.10.0 +Flags = --enable-libfreetype + +[libfribidi] +Version = 0.19.7 +SHA256sum = 3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +[libkvazaar] +Version = 1.2.0 +Flags = --enable-libkvazaar + +[libmp3lame] +Version = 3.100 +Flags = --enable-libmp3lame + +[libogg] +Version = 1.3.3 +SHA256sum = c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 + +[libopencore-amr] +Version = 0.1.5 +Flags = --enable-libopencore-amrnb, --enable-libopencore-amrwb, --enable-version3 + +[libopenjpeg] +Version = 2.3.1 +Flags = --enable-libopenjpeg + +[libopus] +Version = 1.3.1 +SHA256sum = 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +Flags = --enable-libopus + +[libtheora] +Version = 1.1.1 +SHA256sum = 40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +DependsOn = libogg +Flags = --enable-libtheora + +[libvidstab] +Version = 1.1.0 +SHA256sum = 14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +Flags = --enable-libvidstab, --enable-gpl + +[libvorbis] +Version = 1.3.6 +SHA256sum = 6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +DependsOn = libogg +Flags = --enable-libvorbis + +[libvpx] +Version = 1.8.0 +Flags = --enable-libvpx + +[libx264] +Version = 20190526-2245-stable +Flags = --enable-libx264 + +[libx265] +Version = 3.0 +Flags = --enable-libx265 + +[libxvid] +Version = 1.3.5 +Flags = --enable-libxvid + +[vaapi] +Flags = --enable-vaapi +Install = libva +InstallDev = libva-dev + +[nvenc] +Version=9.0.18.1 +Flags = --enable-cuda, --enable-nvenc, --enable-cuvid +Variants = nvidia + +[vdpau] +Flags = --enable-vdpau +Install = libvdpau +InstallDev = libvdpau-dev \ No newline at end of file diff --git a/templates/config/config_snapshot.ini b/templates/config/config_snapshot.ini new file mode 100644 index 000000000..c55c64bb6 --- /dev/null +++ b/templates/config/config_snapshot.ini @@ -0,0 +1,98 @@ +[ffmpeg] +Version = snapshot + +[libaom] +Version = 1.0.0-errata1 +Flags = --enable-libaom, --extra-libs=-lpthread + +[libass] +Version = 0.14.0 +DependsOn = libfreetype, libfribidi, libfontconfig +Flags = --enable-libass + +[libfdk-aac] +Version = 2.0.0 +Flags = --enable-libfdk_aac, --enable-nonfree + +[libfontconfig] +Version = 2.13.1 + +[libfreetype] +Version = 2.10.0 +Flags = --enable-libfreetype + +[libfribidi] +Version = 0.19.7 +SHA256sum = 3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 + +[libkvazaar] +Version = 1.2.0 +Flags = --enable-libkvazaar + +[libmp3lame] +Version = 3.100 +Flags = --enable-libmp3lame + +[libogg] +Version = 1.3.3 +SHA256sum = c2e8a485110b97550f453226ec644ebac6cb29d1caef2902c007edab4308d985 + +[libopencore-amr] +Version = 0.1.5 +Flags = --enable-libopencore-amrnb, --enable-libopencore-amrwb, --enable-version3 + +[libopenjpeg] +Version = 2.3.1 +Flags = --enable-libopenjpeg + +[libopus] +Version = 1.3.1 +SHA256sum = 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d +Flags = --enable-libopus + +[libtheora] +Version = 1.1.1 +SHA256sum = 40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b +DependsOn = libogg +Flags = --enable-libtheora + +[libvidstab] +Version = 1.1.0 +SHA256sum = 14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb +Flags = --enable-libvidstab, --enable-gpl + +[libvorbis] +Version = 1.3.6 +SHA256sum = 6ed40e0241089a42c48604dc00e362beee00036af2d8b3f46338031c9e0351cb +DependsOn = libogg +Flags = --enable-libvorbis + +[libvpx] +Version = 1.8.0 +Flags = --enable-libvpx + +[libx264] +Version = 20190526-2245-stable +Flags = --enable-libx264 + +[libx265] +Version = 3.0 +Flags = --enable-libx265 + +[libxvid] +Version = 1.3.5 +Flags = --enable-libxvid + +[vaapi] +Flags = --enable-vaapi +Install = libva +InstallDev = libva-dev + +[nvenc] +Version=9.0.18.1 +Flags = --enable-cuda, --enable-nvenc, --enable-cuvid +Variants = nvidia + +[libdav1d] +Version=0.3.1 +Flags= --enable-libdav1d \ No newline at end of file diff --git a/templates/fragments/ffmpeg b/templates/fragments/ffmpeg new file mode 100644 index 000000000..00d6d6243 --- /dev/null +++ b/templates/fragments/ffmpeg @@ -0,0 +1,24 @@ +RUN \ + DIR=ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + tar -jx --strip-components=1 -f ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ + ./configure \ + --disable-debug \ + --disable-doc \ + --disable-ffplay \ + --enable-shared \ + --enable-avresample \ + --enable-openssl \ + --enable-postproc \ + --enable-small \ + --extra-cflags="-I${PREFIX}/include -I/usr/local/include" \ + --extra-ldflags="-L${PREFIX}/lib -L/usr/local/lib" \ + $lib_flags \ + --prefix="${PREFIX}" && \ + make && \ + make install && \ + make distclean && \ + hash -r && \ + cd tools && \ + make qt-faststart && \ + cp qt-faststart ${PREFIX}/bin \ No newline at end of file diff --git a/templates/fragments/libaom b/templates/fragments/libaom new file mode 100644 index 000000000..d60d431a6 --- /dev/null +++ b/templates/fragments/libaom @@ -0,0 +1,11 @@ +RUN \ + DIR=aom && \ + git clone --branch v${LIBAOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom ${DIR} ; \ + cd ${DIR} ; \ + rm -rf CMakeCache.txt CMakeFiles ; \ + mkdir -p ./aom_build ; \ + cd ./aom_build ; \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=1 ..; \ + make ; \ + make install ; \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libass b/templates/fragments/libass new file mode 100644 index 000000000..f3f6aa318 --- /dev/null +++ b/templates/fragments/libass @@ -0,0 +1,11 @@ +RUN \ + DIR=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} \ No newline at end of file diff --git a/templates/fragments/libdav1d b/templates/fragments/libdav1d new file mode 100644 index 000000000..24a46e3a7 --- /dev/null +++ b/templates/fragments/libdav1d @@ -0,0 +1,10 @@ +## dav1d https://code.videolan.org/videolan/dav1d +RUN \ + DIR=dav1d && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://code.videolan.org/videolan/dav1d/-/archive/${LIBDAV1D_VERSION}/dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f dav1d-${LIBDAV1D_VERSION}.tar.gz && \ + meson build --prefix ${PREFIX} --buildtype release && \ + ninja -C build install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libfdk-aac b/templates/fragments/libfdk-aac new file mode 100644 index 000000000..2f6768f2d --- /dev/null +++ b/templates/fragments/libfdk-aac @@ -0,0 +1,12 @@ +### fdk-aac https://github.com/mstorsjo/fdk-aac +RUN \ + DIR=fdk-aac && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${LIBFDK_AAC_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared --datadir="${DIR}" && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libfontconfig b/templates/fragments/libfontconfig new file mode 100644 index 000000000..6fed3e4bd --- /dev/null +++ b/templates/fragments/libfontconfig @@ -0,0 +1,11 @@ +## fontconfig https://www.freedesktop.org/wiki/Software/fontconfig/ +RUN \ + DIR=fontconfig && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 &&\ + tar -jx --strip-components=1 -f fontconfig-${LIBFONTCONFIG_VERSION}.tar.bz2 && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libfreetype b/templates/fragments/libfreetype new file mode 100644 index 000000000..85f084118 --- /dev/null +++ b/templates/fragments/libfreetype @@ -0,0 +1,11 @@ +## freetype https://www.freetype.org/ +RUN \ + DIR=freetype && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://download.savannah.gnu.org/releases/freetype/freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + tar -zx --strip-components=1 -f freetype-${LIBFREETYPE_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libfribidi b/templates/fragments/libfribidi new file mode 100644 index 000000000..99469ca4b --- /dev/null +++ b/templates/fragments/libfribidi @@ -0,0 +1,15 @@ +## fridibi https://www.fribidi.org/ +# + https://github.com/fribidi/fribidi/issues/8 +RUN \ + DIR=fribidi && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/fribidi/fribidi/archive/${LIBFRIBIDI_VERSION}.tar.gz && \ + echo "${LIBFRIBIDI_SHA256SUM} ${LIBFRIBIDI_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f ${LIBFRIBIDI_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} \ No newline at end of file diff --git a/templates/fragments/libkvazaar b/templates/fragments/libkvazaar new file mode 100644 index 000000000..94e80bd61 --- /dev/null +++ b/templates/fragments/libkvazaar @@ -0,0 +1,16 @@ +## kvazaar https://github.com/ultravideo/kvazaar +RUN \ + DIR=kvazaar && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/ultravideo/kvazaar/archive/v${LIBKVAZAAR_VERSION}.tar.gz &&\ + tar -zx --strip-components=1 -f v${LIBKVAZAAR_VERSION}.tar.gz && \ + if [ -e ./autogen.sh ]; then \ + ./autogen.sh && \ + ./configure -prefix="${PREFIX}" --disable-static --enable-shared ; \ + else \ + cd src ; \ + fi && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libmp3lame b/templates/fragments/libmp3lame new file mode 100644 index 000000000..06a6f4b1e --- /dev/null +++ b/templates/fragments/libmp3lame @@ -0,0 +1,11 @@ +### libmp3lame http://lame.sourceforge.net/ +RUN \ + DIR=lame && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/lame/lame/$(echo ${LIBMP3LAME_VERSION} | sed -e 's/[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)/\1.\2/')/lame-${LIBMP3LAME_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libogg b/templates/fragments/libogg new file mode 100644 index 000000000..d93368e15 --- /dev/null +++ b/templates/fragments/libogg @@ -0,0 +1,12 @@ +## libogg https://www.xiph.org/ogg/ +RUN \ + DIR=ogg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz && \ + echo "${LIBOGG_SHA256SUM} libogg-${LIBOGG_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libogg-${LIBOGG_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libopencore-amr b/templates/fragments/libopencore-amr new file mode 100644 index 000000000..0eb21a18b --- /dev/null +++ b/templates/fragments/libopencore-amr @@ -0,0 +1,11 @@ +## opencore-amr https://sourceforge.net/projects/opencore-amr/ +RUN \ + DIR=opencore-amr && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://kent.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${LIBOPENCORE_AMR_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libopenjpeg b/templates/fragments/libopenjpeg new file mode 100644 index 000000000..2c5c89747 --- /dev/null +++ b/templates/fragments/libopenjpeg @@ -0,0 +1,16 @@ +## openjpeg https://github.com/uclouvain/openjpeg +RUN \ + DIR=openjpeg && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + if test `echo ${LIBOPENJPEG_VERSION} | tr -d '.'` -ge '210'; then \ + version_prefix='v'; \ + else \ + version_prefix='version.' ;\ + fi && \ + curl -sL https://github.com/uclouvain/openjpeg/archive/${version_prefix}${LIBOPENJPEG_VERSION}.tar.gz | \ + tar -zx --strip-components=1 && \ + cmake -DBUILD_THIRDPARTY:BOOL=ON -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libopus b/templates/fragments/libopus new file mode 100644 index 000000000..a5a3f9d58 --- /dev/null +++ b/templates/fragments/libopus @@ -0,0 +1,12 @@ +RUN \ + DIR=opus && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://archive.mozilla.org/pub/opus/opus-${LIBOPUS_VERSION}.tar.gz && \ + echo "${LIBOPUS_SHA256SUM} opus-${LIBOPUS_VERSION}.tar.gz"| sha256sum --check && \ + tar -zx --strip-components=1 -f opus-${LIBOPUS_VERSION}.tar.gz && \ + autoreconf -fiv && \ + ./configure --prefix="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libtheora b/templates/fragments/libtheora new file mode 100644 index 000000000..431728745 --- /dev/null +++ b/templates/fragments/libtheora @@ -0,0 +1,12 @@ +### libtheora http://www.theora.org/ +RUN \ + DIR=theora && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + echo "${LIBTHEORA_SHA256SUM} libtheora-${LIBTHEORA_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libtheora-${LIBTHEORA_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libvidstab b/templates/fragments/libvidstab new file mode 100644 index 000000000..198daa7e3 --- /dev/null +++ b/templates/fragments/libvidstab @@ -0,0 +1,12 @@ +## libvstab https://github.com/georgmartius/vid.stab +RUN \ + DIR=vid.stab && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\ + echo "${LIBVIDSTAB_SHA256SUM} v${LIBVIDSTAB_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f v${LIBVIDSTAB_VERSION}.tar.gz && \ + cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libvorbis b/templates/fragments/libvorbis new file mode 100644 index 000000000..cd8285542 --- /dev/null +++ b/templates/fragments/libvorbis @@ -0,0 +1,12 @@ +### libvorbis https://xiph.org/vorbis/ +RUN \ + DIR=vorbis && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + echo "${LIBVORBIS_SHA256SUM} libvorbis-${LIBVORBIS_VERSION}.tar.gz" | sha256sum --check && \ + tar -zx --strip-components=1 -f libvorbis-${LIBVORBIS_VERSION}.tar.gz && \ + ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libvpx b/templates/fragments/libvpx new file mode 100644 index 000000000..c8460983d --- /dev/null +++ b/templates/fragments/libvpx @@ -0,0 +1,12 @@ +### libvpx https://www.webmproject.org/code/ +RUN \ + DIR=vpx && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${LIBVPX_VERSION} | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-pic --enable-shared \ + --disable-debug --disable-examples --disable-docs && \ + make && \ + make install && \ + rm -rf ${DIR} diff --git a/templates/fragments/libx264 b/templates/fragments/libx264 new file mode 100644 index 000000000..af230c59c --- /dev/null +++ b/templates/fragments/libx264 @@ -0,0 +1,11 @@ +## x264 http://www.videolan.org/developers/x264.html +RUN \ + DIR=x264 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${LIBX264_VERSION}.tar.bz2 | \ + tar -jx --strip-components=1 && \ + ./configure --prefix="${PREFIX}" --enable-shared --enable-pic && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libx265 b/templates/fragments/libx265 new file mode 100644 index 000000000..c45da2910 --- /dev/null +++ b/templates/fragments/libx265 @@ -0,0 +1,13 @@ +### x265 http://x265.org/ +RUN \ + DIR=x265 && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://download.videolan.org/pub/videolan/x265/x265_${LIBX265_VERSION}.tar.gz | \ + tar -zx && \ + cd x265_${LIBX265_VERSION}/build/linux && \ + sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\${PREFIX}/" multilib.sh && \ + sed -i "/^cmake/ s/$/ -DENABLE_CLI=ON/" multilib.sh && \ + ./multilib.sh && \ + make -C 8bit install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/libxvid b/templates/fragments/libxvid new file mode 100644 index 000000000..e8c3f10e2 --- /dev/null +++ b/templates/fragments/libxvid @@ -0,0 +1,12 @@ +### xvid https://www.xvid.com/ +RUN \ + DIR=xvid && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sLO http://downloads.xvid.org/downloads/xvidcore-${LIBXVID_VERSION}.tar.gz && \ + tar -zx -f xvidcore-${LIBXVID_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} \ No newline at end of file diff --git a/templates/fragments/nvenc b/templates/fragments/nvenc new file mode 100644 index 000000000..de0cea90d --- /dev/null +++ b/templates/fragments/nvenc @@ -0,0 +1,8 @@ +RUN \ + DIR=nv-codec-headers && \ + git clone --branch n${NVENC_VERSION} --depth=1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git ${DIR} && \ + cd ${DIR} && \ + sed -i 's@/usr/local@'"$PREFIX"'@' Makefile && \ + make && \ + make install && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/fragments/vaapi b/templates/fragments/vaapi new file mode 100644 index 000000000..e69de29bb diff --git a/templates/fragments/vdpau b/templates/fragments/vdpau new file mode 100644 index 000000000..e69de29bb diff --git a/templates/travis.template b/templates/travis.template index 7b9e2620c..ecfa78aed 100644 --- a/templates/travis.template +++ b/templates/travis.template @@ -21,7 +21,7 @@ before_script: - image="ffmpeg:${VERSION}-${VARIANT:-ubuntu}" script: - - docker build -t "${image}" --build-arg MAKEFLAGS="-j$(($(grep -c ^processor /proc/cpuinfo) + 1))" docker-images/${VERSION}/${VARIANT} + - docker build -t "${image}" --build-arg MAKEFLAGS="-j$(($(nproc) + 1))" docker-images/${VERSION}/${VARIANT} - docker run --rm ${image} -buildconf after_script: diff --git a/templates/variants/Dockerfile.alpine b/templates/variants/Dockerfile.alpine new file mode 100644 index 000000000..62a53761c --- /dev/null +++ b/templates/variants/Dockerfile.alpine @@ -0,0 +1,47 @@ +FROM alpine:3.9 as base + +RUN apk add --no-cache --update $packages \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=$prefix +ARG MAKEFLAGS=$makeflags +ARG PKG_CONFIG_PATH=$prefix/lib/pkgconfig + +RUN apk add --no-cache --update $dev_packages \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja \ No newline at end of file diff --git a/templates/variants/Dockerfile.armv7 b/templates/variants/Dockerfile.armv7 new file mode 100644 index 000000000..da7477d07 --- /dev/null +++ b/templates/variants/Dockerfile.armv7 @@ -0,0 +1,47 @@ +FROM arm32v7/alpine:3.9 as base + +RUN apk add --no-cache --update $packages \ + libgcc \ + libstdc++ \ + ca-certificates \ + libcrypto1.1 \ + libssl1.1 \ + libgomp \ + expat \ + libuuid + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=$prefix +ARG MAKEFLAGS=$makeflags +ARG PKG_CONFIG_PATH=$prefix/lib/pkgconfig + +RUN apk add --no-cache --update $dev_packages \ + autoconf \ + automake \ + bash \ + binutils \ + bzip2 \ + cmake \ + curl \ + coreutils \ + diffutils \ + file \ + g++ \ + git \ + gcc \ + gperf \ + libtool \ + make \ + python \ + openssl-dev \ + tar \ + yasm \ + nasm \ + zlib-dev \ + expat-dev \ + util-linux-dev \ + meson \ + ninja \ No newline at end of file diff --git a/templates/variants/Dockerfile.centos b/templates/variants/Dockerfile.centos new file mode 100644 index 000000000..ea82aed7c --- /dev/null +++ b/templates/variants/Dockerfile.centos @@ -0,0 +1,83 @@ +FROM centos:7 as base + +RUN yum -y install $packages libgomp libuuid && \ + echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf && \ + echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=$prefix +ARG MAKEFLAGS=$makeflags +ARG PKG_CONFIG_PATH=$prefix/lib/pkgconfig:$prefix/lib64/pkgconfig + +RUN yum --enablerepo=extras install -y epel-release && \ + yum install -y \ + $dev_packages \ + autoconf \ + automake \ + bzip2 \ + cmake \ + expat-devel \ + gcc \ + gcc-c++ \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + openssl-devel \ + tar \ + yasm \ + which \ + zlib-devel \ + libuuid-devel \ + libcurl-devel \ + xz-devel \ + libarchive-devel \ + python36 \ + python36-pip + +#Centos is missing recent version of CMake (>= 3.5) +RUN \ + DIR=/tmp/cmake && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz | \ + tar -zx --strip-components=1 && \ + ./bootstrap --system-libs --no-system-jsoncpp && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing recent version of nasm (>= 2.13) +RUN \ + DIR=/tmp/nasm && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz | \ + tar -zx --strip-components=1 && \ + ./configure --prefix="/usr" && \ + make && \ + make install && \ + rm -rf ${DIR} + +#Centos is missing ninja +RUN \ + DIR=/tmp/ninja && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + curl -sL https://github.com/ninja-build/ninja/archive/v1.9.0.tar.gz | \ + tar -zx --strip-components=1 && \ + python configure.py --bootstrap && \ + cp ./ninja /usr/bin/ && \ + rm -rf ${DIR} + +RUN \ + DIR=/tmp/meson && \ + mkdir -p ${DIR} && \ + cd ${DIR} && \ + pip3 install meson && \ + rm -rf ${DIR} \ No newline at end of file diff --git a/templates/variants/Dockerfile.nvidia b/templates/variants/Dockerfile.nvidia new file mode 100644 index 000000000..c52c5ce74 --- /dev/null +++ b/templates/variants/Dockerfile.nvidia @@ -0,0 +1,41 @@ +FROM nvidia/cuda:10.1-runtime-ubuntu18.04 AS base + +ENV NVIDIA_DRIVER_CAPABILITIES=video + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends $packages ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=$prefix +ARG MAKEFLAGS=$makeflags +ARG PKG_CONFIG_PATH=$prefix/lib/pkgconfig +ARG C_INCLUDE_PATH=$prefix/include/ffnvcodec + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + $dev_packages \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ No newline at end of file diff --git a/templates/variants/Dockerfile.ubuntu b/templates/variants/Dockerfile.ubuntu new file mode 100644 index 000000000..89963d668 --- /dev/null +++ b/templates/variants/Dockerfile.ubuntu @@ -0,0 +1,40 @@ +FROM ubuntu:18.04 AS base + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends $packages ca-certificates expat libgomp1 libuuid1 libssl1.0 && \ + apt-get autoremove -y && \ + apt-get clean -y + +FROM base as build + +WORKDIR /tmp/workdir + +ARG PREFIX=$prefix +ARG MAKEFLAGS=$makeflags +ARG PKG_CONFIG_PATH=$prefix/lib/pkgconfig + +RUN apt-get -yqq update && \ + apt-get install -yq --no-install-recommends \ + $dev_packages \ + autoconf \ + automake \ + cmake \ + curl \ + bzip2 \ + libexpat1-dev \ + g++ \ + gcc \ + git \ + gperf \ + libtool \ + make \ + nasm \ + perl \ + pkg-config \ + python \ + libssl1.0-dev \ + yasm \ + zlib1g-dev \ + uuid-dev \ + ninja-build \ + meson \ No newline at end of file diff --git a/templates/variants/packages.ini b/templates/variants/packages.ini new file mode 100644 index 000000000..cf2e91ffe --- /dev/null +++ b/templates/variants/packages.ini @@ -0,0 +1,30 @@ +[ubuntu] +libva = libva2 libva-drm2 i965-va-driver +libva-dev = libva-dev +libssl1.0 = libssl1.0 +libssl1.0-dev = libssl1.0-dev +libvdpau = libvdpau1 +libvdpau-dev = libvdpau-dev + +[centos] +libva = libva +libva-dev = libva-devel +libvdpau = libvdpau +libvdpau-dev = libvdpau-devel + + +[alpine] +libva = libva +libva-dev = libva-dev +libssl1.0 = libressl +libssl1.0-dev = libressl-dev +libvdpau = libvdpau +libvdpau-dev = libvdpau-dev + +[nvidia] +libva = libva2 libva-drm2 i965-va-driver +libva-dev = libva-dev +libssl1.0 = libssl1.0 +libssl1.0-dev = libssl1.0-dev +libvdpau = libvdpau1 +libvdpau-dev = libvdpau-dev diff --git a/update.py b/update.py index 3d252192b..67ceb6976 100755 --- a/update.py +++ b/update.py @@ -1,11 +1,11 @@ -#!/usr/bin/env python +#! /usr/bin/env python - -# Get latest release from ffmpeg.org -import os +from string import Template import sys +<<<<<<< HEAD +<<<<<<< HEAD import re -import urllib2 +import urllib from distutils.version import StrictVersion MIN_VERSION = '2.8' @@ -49,68 +49,186 @@ version, variant) travis.append(' - VERSION=%s VARIANT=%s' % (version, variant)) azure.append(' %s_%s:\n VERSION: %s\n VARIANT: %s' % (version.replace('.', '_'), variant, version, variant)) +======= +======= +>>>>>>> fix extra comma +import getopt +import argparse +import configparser +from os import listdir, path + +variants = ['alpine', 'centos', 'ubuntu', 'nvidia', 'armv7'] +versions = ['snapshot', '4.1', '4.0', '3.4', '3.3', '3.2', '2.8'] +builddir = '/tmp/build' +makeflags = '-j6' + +templates = "./templates" + +fragments = path.join(templates, "fragments") +common = path.join(templates, "common") +configfile_template = path.join(templates, 'config', "config_${version}.ini") + +class ActionEnableDisable(argparse.Action): + def __init__(self, option_strings, dest, default=None, required=False, help=None): + if len(option_strings) != 1: + raise ValueError('Only a single argument is allowed with enable/disable action') + if not option_strings[0].startswith('--'): + raise ValueError('Enable/Disable arguments must be prefixed with "--"') + + opt_name = option_strings[0][2:] + opts = ['--enable-' + opt_name, '--disable-' + opt_name] + super(ActionEnableDisable, self).__init__(opts, dest, nargs=0, const=None, default=default, required=required, help=help) + + def __call__(self, parser, namespace, values, option_strings=None): + if option_strings.startswith('--disable-'): + setattr(namespace, self.dest, False) +<<<<<<< HEAD +>>>>>>> fix extra comma +======= +>>>>>>> fix extra comma else: - dockerfile = 'docker-images/%s/%s/Dockerfile' % ( - version[0:3], variant) - travis.append(' - VERSION=%s VARIANT=%s' % (version[0:3], variant)) - azure.append(' %s_%s:\n VERSION: %s\n VARIANT: %s' % (version[0:3].replace('.', '_'), variant, version[0:3], variant)) - - with open('templates/Dockerfile-env', 'r') as tmpfile: - env_content = tmpfile.read() - with open('templates/Dockerfile-template.' + variant, 'r') as tmpfile: - template = tmpfile.read() - with open('templates/Dockerfile-run', 'r') as tmpfile: - run_content = tmpfile.read() - env_content = env_content.replace('%%FFMPEG_VERSION%%', version) - docker_content = template.replace('%%ENV%%', env_content) - docker_content = docker_content.replace('%%RUN%%', run_content) - # OpenJpeg 2.1 is not supported in 2.8 - if version[0:3] == '2.8': - docker_content = docker_content.replace('--enable-libopenjpeg', '') - docker_content = docker_content.replace('--enable-libkvazaar', '') - if (version != 'snapshot' and version[0] < '4') or variant == 'centos': - docker_content = re.sub(r"--enable-libaom [^\\]*", "", docker_content) - if (version == 'snapshot' or version[0] >= '3') and variant == 'vaapi': - docker_content = docker_content.replace('--disable-ffplay', '--disable-ffplay \\\n --enable-vaapi') - - if variant == 'nvidia': - docker_content = docker_content.replace('--extra-cflags="-I${PREFIX}/include"', '--extra-cflags="-I${PREFIX}/include -I${PREFIX}/include/ffnvcodec -I/usr/local/cuda/include/"') - docker_content = docker_content.replace('--extra-ldflags="-L${PREFIX}/lib"', '--extra-ldflags="-L${PREFIX}/lib -L/usr/local/cuda/lib64/ -L/usr/local/cuda/lib32/"') - if (version == 'snapshot' or version[0] >= '4') : - docker_content = docker_content.replace('--disable-ffplay', '--disable-ffplay \\\n --enable-cuda \\\n --enable-nvenc \\\n --enable-cuvid \\\n --enable-libnpp') - # Don't support hw decoding and scaling on older ffmpeg versions - if (version[0] < '4') : - docker_content = docker_content.replace('--disable-ffplay', '--disable-ffplay \\\n --enable-nvenc') - # FFmpeg 3.2 and earlier don't compile correctly on Ubuntu 18.04 due to openssl issues - if (version[0] < '3' or (version[0] == '3' and version[2] < '3')) : - docker_content = docker_content.replace('-ubuntu18.04', '-ubuntu16.04') - - # FFmpeg 3.2 and earlier don't compile correctly on Ubuntu 18.04 due to openssl issues - if variant == 'vaapi' and (version[0] < '3' or (version[0] == '3' and version[2] < '3')): - docker_content = docker_content.replace('ubuntu:18.04', 'ubuntu:16.04') - docker_content = docker_content.replace('libva-drm2', 'libva-drm1') - docker_content = docker_content.replace('libva2', 'libva1') - - d = os.path.dirname(dockerfile) - if not os.path.exists(d): - os.makedirs(d) - - with open(dockerfile, 'w') as dfile: - dfile.write(docker_content) - - -with open('templates/travis.template', 'r') as tmpfile: - template = tmpfile.read() -travis = template.replace('%%VERSIONS%%', '\n'.join(travis)) - - -with open('.travis.yml', 'w') as travisfile: - travisfile.write(travis) - -with open('templates/azure.template', 'r') as tmpfile: - template = tmpfile.read() -azure = template.replace('%%VERSIONS%%', '\n'.join(azure)) - - -with open('azure-pipelines.yml', 'w') as azurefile: - azurefile.write(azure) + setattr(namespace, self.dest, True) + +def parser_gen(): + parser = argparse.ArgumentParser(description='Dockerfile generator.') + for f in listdir(fragments): + if f != 'ffmpeg' and path.isfile(path.join(fragments, f)): + parser.add_argument('--' + f, action=ActionEnableDisable, default=None, help='enable/disable ' + f) + + parser.add_argument('--enable-all', help='set all external libraries to true', action='store_true', default=False) + parser.add_argument('variant', default='alpine', choices=variants) + parser.add_argument('version', default='4.1', choices=versions) + parser.add_argument('--with-bins', action='store_true', default=False ) + parser.add_argument('--no-strip', action='store_true', default=False) + + outsize = parser.add_mutually_exclusive_group(required=False) + outsize.add_argument('--fat', help='keep everything', action='store_true', default=True) + outsize.add_argument('--slim', help='only keep libraries', action='store_true', default=False) + outsize.add_argument('--scratch', help='build from scratch', action='store_true', default=False) + + return parser + +def kebab_arg(name): + return name.replace('_', '-') + +def snake_arg(name): + return name.replace('-', '_') + +def dockerfile_gen(args, config, packages): + variant = open(path.join(templates, 'variants', "Dockerfile.%s" % (getattr(args, 'variant')))) + src = Template(variant.read()) + + d={ + 'prefix': builddir, + 'makeflags': makeflags, + 'packages': '', + 'dev_packages': '' + } + + + + deps = [] + flags = [] + default = False + if getattr(args, 'enable_all'): + delattr(args, 'enable_all') + default = True + + for section in config.sections(): + dep = snake_arg(section) + if hasattr(args, dep) and getattr(args, dep) is None: + setattr(args, dep, default) + + for arg in vars(args): + library = kebab_arg(arg) + if getattr(args, arg) and library in config: + if 'Variants' in config[library] and variant in config[library]['Variants'].split(','): + continue + if 'DependsOn' in config[library]: + if not config[library]['DependsOn'] in deps: + for dependency in config[library]['DependsOn'].split(','): + deps.append(dependency.strip()) + if 'Flags' in config[library]: + if not config[library]['Flags'] in flags: + for flag in config[library]['Flags'].split(','): + flags.append(flag.strip()) + if not library in deps: + deps.append(library) + + for dep in deps + ['ffmpeg']: + if 'Install' in config[dep]: + for package in config[dep]['Install'].split(','): + d['packages'] = "%s %s" % (packages[getattr(args, 'variant')][package].strip(), d['packages']) + if 'InstallDev' in config[dep]: + for package in config[dep]['InstallDev'].split(','): + d['dev_packages'] = "%s %s" % (packages[getattr(args, 'variant')][package].strip(), d['dev_packages']) + + result = src.safe_substitute(d) + print(result) + + print ("") + print ("ARG\tFFMPEG_VERSION=%s" % (config.get('ffmpeg', 'Version'))) + for dependency in deps: + if "Version" in config[dependency]: + print ("ARG\t%s_VERSION=%s" % (snake_arg(dependency.upper()), config.get(dependency, "Version"))) + + print ("") + for dependency in deps: + if "SHA256sum" in config[dependency]: + print ("ARG\t%s_SHA256SUM=%s" % (dependency.upper(), config.get(dependency, "SHA256sum"))) + + print("") + for dependency in deps: + with open(path.join(fragments, dependency)) as fragment: + print (fragment.read()) + + with open(path.join(fragments, 'ffmpeg')) as ffmpeg_fragment: + ffmpeg_template = Template(ffmpeg_fragment.read()) + ffmpeg_flags = ' \\\n\t'.join(flags) + + result = ffmpeg_template.safe_substitute({'lib_flags': ffmpeg_flags}) + print(result) + + if getattr(args, 'slim'): + assembly_type = 'slim' + release_pattern = {'source': 'base', 'entrypoint': 'ffmpeg', 'install_dir': '/usr/local'} + assembly_pattern = { + 'bins': 'true' if getattr(args, 'with_bins') else 'false', + 'strip': 'false' if getattr(args, 'no_strip') else 'true' + } + elif getattr(args, 'scratch'): + assembly_type = 'scratch' + release_pattern = {'source': 'scratch', 'entrypoint': '/bin/ffmpeg', 'install_dir': '/'} + assembly_pattern = { + 'bins': 'true' if getattr(args, 'with_bins') else 'false', + 'strip': 'false' if getattr(args, 'no_strip') else 'true' + } + else : + assembly_type = 'fat' + release_pattern = {'source': 'base', 'entrypoint': 'ffmpeg', 'install_dir': '/usr/local'} + assembly_pattern = {} + + with open(path.join(common, assembly_type)) as assembly: + assembly_template = Template(assembly.read()) + print (assembly_template.safe_substitute(assembly_pattern)) + + with open(path.join(common, 'release')) as release: + release_template = Template(release.read()) + print (release_template.safe_substitute(release_pattern)) + + + +def main(argv): + args_parser = parser_gen() + config_parser = configparser.ConfigParser() + package_parser = configparser.ConfigParser() + + args = args_parser.parse_args() + configfile = Template(configfile_template) + + config_parser.read(configfile.safe_substitute({'version': getattr(args, 'version')})) + package_parser.read(path.join(templates, 'variants', 'packages.ini')) + dockerfile_gen(args, config_parser, package_parser) + +if __name__ == '__main__': + main(sys.argv) \ No newline at end of file