Skip to content

Commit e2464da

Browse files
committed
Add Dockerfile
1 parent d7182e0 commit e2464da

File tree

1 file changed

+131
-0
lines changed

1 file changed

+131
-0
lines changed

Dockerfile

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
FROM lambci/lambda-base:build
2+
3+
RUN yum update -y
4+
5+
RUN yum install -y install autoconf \
6+
automake \
7+
bzip2 \
8+
bzip2-devel \
9+
cmake \
10+
freetype-devel \
11+
gcc \
12+
gcc-c++ \
13+
git \
14+
libtool \
15+
make \
16+
mercurial \
17+
pkgconfig \
18+
zlib-devel \
19+
libfdk-aac-dev
20+
21+
RUN mkdir ~/ffmpeg_sources
22+
23+
# Install Nasm
24+
# An assembler used by some libraries. Highly recommended or your resulting build may be very slow.
25+
RUN cd ~/ffmpeg_sources && \
26+
curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 && \
27+
tar xjvf nasm-2.14.02.tar.bz2 && \
28+
cd nasm-2.14.02 && \
29+
./autogen.sh && \
30+
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
31+
PATH="$HOME/bin:$PATH" make && \
32+
make install
33+
34+
# Install Yasm
35+
# An assembler used by some libraries. Highly recommended or your resulting build may be very slow.
36+
RUN cd ~/ffmpeg_sources && \
37+
curl -O -L https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz && \
38+
tar xzvf yasm-1.3.0.tar.gz && \
39+
cd yasm-1.3.0 && \
40+
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
41+
make && \
42+
make install
43+
44+
# Install libx264
45+
# H.264 video encoder.
46+
RUN cd ~/ffmpeg_sources && \
47+
git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
48+
cd x264 && \
49+
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static && \
50+
PATH="$HOME/bin:$PATH" make && \
51+
make install
52+
53+
# Install libx265
54+
# H.265/HEVC video encoder.
55+
RUN cd ~/ffmpeg_sources && \
56+
hg clone https://bitbucket.org/multicoreware/x265 && \
57+
cd ~/ffmpeg_sources/x265/build/linux && \
58+
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source && \
59+
make && \
60+
make install
61+
62+
# Install libfdk_aac
63+
# AAC audio encoder.
64+
RUN cd ~/ffmpeg_sources && \
65+
git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
66+
cd fdk-aac && \
67+
autoreconf -fiv && \
68+
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
69+
PATH="$HOME/bin:$PATH" make && \
70+
make install
71+
72+
# Install libmp3lame
73+
# MP3 audio encoder.
74+
RUN cd ~/ffmpeg_sources && \
75+
curl -O -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz && \
76+
tar xzvf lame-3.100.tar.gz && \
77+
cd lame-3.100 && \
78+
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm && \
79+
PATH="$HOME/bin:$PATH" make && \
80+
make install
81+
82+
# Install libopus
83+
# Opus audio decoder and encoder
84+
RUN cd ~/ffmpeg_sources && \
85+
curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz && \
86+
tar xzvf opus-1.3.1.tar.gz && \
87+
cd opus-1.3.1 && \
88+
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
89+
PATH="$HOME/bin:$PATH" make && \
90+
make install
91+
92+
# Install libvpx
93+
# VP8/VP9 video encoder and decoder.
94+
RUN cd ~/ffmpeg_sources && \
95+
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
96+
cd libvpx && \
97+
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \
98+
PATH="$HOME/bin:$PATH" make && \
99+
make install
100+
101+
ARG FFMPEG_VERSION
102+
103+
# Install ffmpeg
104+
RUN cd ~/ffmpeg_sources && \
105+
curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
106+
tar xjvf ffmpeg-snapshot.tar.bz2 && \
107+
cd ffmpeg && \
108+
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
109+
--prefix="$HOME/ffmpeg_build" \
110+
--pkg-config-flags="--static" \
111+
--extra-cflags="-I$HOME/ffmpeg_build/include" \
112+
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
113+
--extra-libs=-lpthread \
114+
--extra-libs=-lm \
115+
--bindir="$HOME/bin" \
116+
--enable-gpl \
117+
--enable-libfdk_aac \
118+
--enable-libfreetype \
119+
--enable-libmp3lame \
120+
--enable-libopus \
121+
--enable-libvpx \
122+
--enable-libx264 \
123+
--enable-libx265 \
124+
--enable-nonfree && \
125+
make && \
126+
make install && \
127+
hash -d ffmpeg
128+
129+
RUN cd $HOME/bin && \
130+
find . ! -perm -o=r -exec chmod +400 {} \; && \
131+
zip -yr /tmp/ffmpeg-${FFMPEG_VERSION}.zip ./*

0 commit comments

Comments
 (0)