/ffmpeg

Docker build for ffmpeg on Ubuntu / Alpine / Centos 7

Primary LanguagePythonApache License 2.0Apache-2.0

FFMPEG for Docker on Centos7

Docker Stars Docker pulls Travis Docker Automated build

This project prepares a minimalist Docker image with FFMPEG. It compiles FFMPEG from sources following instructions from the Compilation Guide.

You can install the latest build of this image by running docker pull jrottenberg/ffmpeg.

This image can be used as a base for an encoding farm, based on centos7.

Ubuntu builds

You can use jrottenberg/ffmpeg:ubuntu or jrottenberg/ffmpeg:3.1 or jrottenberg/ffmpeg:3 to get the latest build based on ubuntu.

Note : I've made ubuntu the default after 3.1

You'll find centos based image using ffmpeg:X.Y-centos or ffmpeg:centos to get the latest. alpine images ffmpeg:X.Y-alpine or ffmpeg:alpine to get the latest.

For information :

u-3.2               ubuntu              1e998987f2da        2 minutes ago        205.5 MB
c-3.2               centos              b73e2e768092        9 minutes ago        274.4 MB
a-3.2               alpine              5da8a4eaeb41        45 minutes ago       73.64 MB

Please use Github issues to report any bug or missing feature.

Test

ffmpeg version 3.0 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4)
  configuration: --prefix=/usr/local --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --bindir=/usr/local/bin --extra-libs=-ldl --enable-version3 --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-gpl --enable-postproc --enable-nonfree --enable-avresample --enable-libfdk_aac --disable-debug --enable-small --enable-openssl --enable-libtheora --enable-libx265 --enable-libopus --enable-libvorbis --enable-libvpx
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100

  configuration:
    --prefix=/usr/local
    --extra-cflags=-I/usr/local/include
    --extra-ldflags=-L/usr/local/lib
    --bindir=/usr/local/bin
    --extra-libs=-ldl
    --enable-version3
    --enable-libfaac
    --enable-libmp3lame
    --enable-libx264
    --enable-libxvid
    --enable-gpl
    --enable-postproc
    --enable-nonfree
    --enable-avresample
    --enable-libfdk_aac
    --disable-debug
    --enable-small
    --enable-openssl
    --enable-libtheora
    --enable-libx265
    --enable-libopus
    --enable-libvorbis
    --enable-libvpx

Capture output from the container to the host running the command

 docker run jrottenberg/ffmpeg \
            -i http://url/to/media.mp4 \
            -stats \
            $ffmpeg_options  - > out.mp4

Example

 docker run jrottenberg/ffmpeg -stats  \
        -i http://archive.org/download/thethreeagesbusterkeaton/Buster.Keaton.The.Three.Ages.ogv \
        -loop 0  \
        -final_delay 500 -c:v gif -f gif -ss 00:49:42 -t 5 - > trow_ball.gif

See what's inside the beast

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

See Dockerfile-env to update a version

Contribute


${EDITOR} Dockerfile-env

./update.py # generates the Dockerfile

docker build -t my-build VERSION/path/

# make sure all variants pass before Travis does
find ffmpeg/ -name Dockerfile | xargs  dirname | parallel --no-notice -j 4 --results logs docker build -t {} {}

Commit the env file AND all the generated Dockerfile for a merge request.