| 1 | FROM debian:latest
|
|---|
| 2 |
|
|---|
| 3 | # Install dependencies
|
|---|
| 4 | RUN apt-get update && apt-get upgrade && \
|
|---|
| 5 | apt-get install -y ca-certificates openssl libssl-dev vim byobu nasm \
|
|---|
| 6 | autoconf \
|
|---|
| 7 | automake \
|
|---|
| 8 | build-essential \
|
|---|
| 9 | cmake \
|
|---|
| 10 | git-core \
|
|---|
| 11 | libass-dev \
|
|---|
| 12 | libfreetype6-dev \
|
|---|
| 13 | libgnutls28-dev \
|
|---|
| 14 | libsdl2-dev \
|
|---|
| 15 | libtool \
|
|---|
| 16 | libva-dev \
|
|---|
| 17 | libvdpau-dev \
|
|---|
| 18 | libvorbis-dev \
|
|---|
| 19 | libxcb1-dev \
|
|---|
| 20 | libxcb-shm0-dev \
|
|---|
| 21 | libxcb-xfixes0-dev \
|
|---|
| 22 | pkg-config \
|
|---|
| 23 | texinfo \
|
|---|
| 24 | wget \
|
|---|
| 25 | yasm \
|
|---|
| 26 | zlib1g-dev \
|
|---|
| 27 | && \
|
|---|
| 28 | rm -rf /var/lib/apt/lists/*
|
|---|
| 29 |
|
|---|
| 30 | RUN mkdir -p $HOME/ffmpeg_build $HOME/ffmpeg_sources $HOME/bin && cd $HOME/ffmpeg_sources
|
|---|
| 31 |
|
|---|
| 32 | RUN cd $HOME/ffmpeg_sources && \
|
|---|
| 33 | wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 && \
|
|---|
| 34 | tar xjvf nasm-2.14.02.tar.bz2 && \
|
|---|
| 35 | cd nasm-2.14.02 && \
|
|---|
| 36 | ./autogen.sh && \
|
|---|
| 37 | PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
|
|---|
| 38 | make -j8 && \
|
|---|
| 39 | make install
|
|---|
| 40 |
|
|---|
| 41 | RUN git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
|
|---|
| 42 | cd x264 && \
|
|---|
| 43 | PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \
|
|---|
| 44 | PATH="$HOME/bin:$PATH" make -j8 && \
|
|---|
| 45 | make install
|
|---|
| 46 |
|
|---|
| 47 | RUN cd $HOME/ffmpeg_sources && \
|
|---|
| 48 | git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
|
|---|
| 49 | cd libvpx && \
|
|---|
| 50 | PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \
|
|---|
| 51 | PATH="$HOME/bin:$PATH" make -j 8 && \
|
|---|
| 52 | make install
|
|---|
| 53 |
|
|---|
| 54 | RUN cd $HOME/ffmpeg_sources && \
|
|---|
| 55 | wget -O lame-3.100.tar.gz https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz && \
|
|---|
| 56 | tar xzvf lame-3.100.tar.gz && \
|
|---|
| 57 | cd lame-3.100 && \
|
|---|
| 58 | PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm && \
|
|---|
| 59 | PATH="$HOME/bin:$PATH" make -j 8 && \
|
|---|
| 60 | make install
|
|---|
| 61 |
|
|---|
| 62 | RUN cd $HOME/ffmpeg_sources && \
|
|---|
| 63 | git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
|
|---|
| 64 | cd opus && \
|
|---|
| 65 | ./autogen.sh && \
|
|---|
| 66 | ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
|
|---|
| 67 | make -j 8 && \
|
|---|
| 68 | make install
|
|---|
| 69 |
|
|---|
| 70 | RUN apt-get install -yq libgnutls28-dev pkg-config
|
|---|
| 71 | RUN cd $HOME/ffmpeg_sources && \
|
|---|
| 72 | git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
|
|---|
| 73 | mkdir -p aom_build && \
|
|---|
| 74 | cd aom_build && \
|
|---|
| 75 | PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \
|
|---|
| 76 | PATH="$HOME/bin:$PATH" make -j 8 && \
|
|---|
| 77 | make install
|
|---|
| 78 |
|
|---|
| 79 | RUN cd ~/ffmpeg_sources && \
|
|---|
| 80 | git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
|
|---|
| 81 | cd fdk-aac && \
|
|---|
| 82 | autoreconf -fiv && \
|
|---|
| 83 | ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
|
|---|
| 84 | make -j8 && \
|
|---|
| 85 | make install
|
|---|
| 86 |
|
|---|
| 87 | RUN cd ~/ffmpeg_sources && \
|
|---|
| 88 | git -C x265_git pull 2> /dev/null || git clone --depth 1 https://bitbucket.org/multicoreware/x265_git && \
|
|---|
| 89 | cd x265_git/build/linux && \
|
|---|
| 90 | PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
|
|---|
| 91 | PATH="$HOME/bin:$PATH" make -j8 && \
|
|---|
| 92 | make install
|
|---|
| 93 |
|
|---|
| 94 | RUN cd ~/ffmpeg_sources && \
|
|---|
| 95 | git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
|
|---|
| 96 | cd x264 && \
|
|---|
| 97 | PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \
|
|---|
| 98 | PATH="$HOME/bin:$PATH" make -j8 && \
|
|---|
| 99 | make install
|
|---|
| 100 |
|
|---|
| 101 | RUN cd ~/ffmpeg_sources && \
|
|---|
| 102 | git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
|
|---|
| 103 | mkdir -p aom_build && \
|
|---|
| 104 | cd aom_build && \
|
|---|
| 105 | PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \
|
|---|
| 106 | PATH="$HOME/bin:$PATH" make -j8 && \
|
|---|
| 107 | make install
|
|---|
| 108 |
|
|---|
| 109 | RUN cd $HOME/ffmpeg_sources && \
|
|---|
| 110 | wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
|
|---|
| 111 | tar xjvf ffmpeg-snapshot.tar.bz2
|
|---|
| 112 | RUN cd $HOME/ffmpeg_sources/ffmpeg && \
|
|---|
| 113 | PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
|
|---|
| 114 | --prefix="$HOME/ffmpeg_build" \
|
|---|
| 115 | --pkg-config-flags="--static" \
|
|---|
| 116 | --extra-cflags="-I$HOME/ffmpeg_build/include" \
|
|---|
| 117 | --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
|
|---|
| 118 | --extra-libs="-lpthread -lm" \
|
|---|
| 119 | --bindir="$HOME/bin" \
|
|---|
| 120 | --enable-gpl \
|
|---|
| 121 | --enable-gnutls \
|
|---|
| 122 | --enable-libaom \
|
|---|
| 123 | --enable-libass \
|
|---|
| 124 | --enable-libfdk-aac \
|
|---|
| 125 | --enable-libfreetype \
|
|---|
| 126 | --enable-libmp3lame \
|
|---|
| 127 | --enable-libopus \
|
|---|
| 128 | --enable-libvorbis \
|
|---|
| 129 | --enable-libvpx \
|
|---|
| 130 | --enable-libx264 \
|
|---|
| 131 | --enable-libx265 \
|
|---|
| 132 | --enable-nonfree && \
|
|---|
| 133 | PATH="$HOME/bin:$PATH" make -j8 && \
|
|---|
| 134 | make install && \
|
|---|
| 135 | hash -r
|
|---|
| 136 |
|
|---|
| 137 | CMD ["/bin/bash"]
|
|---|