Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
How to compile ffmpeg on Amazon Linux (EC2)
# Based on instructions found here:
if [ "`/usr/bin/whoami`" != "root" ]; then
echo "You need to execute this script as root."
exit 1
cat > /etc/yum.repos.d/centos.repo<<EOF
name=CentOS-6 – Base
includepkgs=SDL SDL-devel gsm gsm-devel libtheora theora-tools libdc1394 libdc1394-devel libraw1394-devel
rpm --import
rpm -Uhv
yum -y update
yum -y install glibc gcc gcc-c++ autoconf automake libtool git make nasm pkgconfig
yum -y install SDL-devel a52dec a52dec-devel alsa-lib-devel faac faac-devel faad2 faad2-devel
yum -y install freetype-devel giflib gsm gsm-devel imlib2 imlib2-devel lame lame-devel libICE-devel libSM-devel libX11-devel
yum -y install libXau-devel libXdmcp-devel libXext-devel libXrandr-devel libXrender-devel libXt-devel
yum -y install libogg libvorbis vorbis-tools mesa-libGL-devel mesa-libGLU-devel xorg-x11-proto-devel zlib-devel
yum -y install libtheora theora-tools
yum -y install ncurses-devel
yum -y install libdc1394 libdc1394-devel
yum -y install amrnb-devel amrwb-devel opencore-amr-devel
cd /opt
tar xzvf xvidcore-1.3.2.tar.gz && rm -f xvidcore-1.3.2.tar.gz
cd xvidcore/build/generic
./configure --prefix="$HOME/ffmpeg_build" && make && make install
cd /opt
tar xzvf libogg-1.3.1.tar.gz && rm -f libogg-1.3.1.tar.gz
cd libogg-1.3.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared && make && make install
cd /opt
tar xzvf libvorbis-1.3.4.tar.gz && rm -f libvorbis-1.3.4.tar.gz
cd libvorbis-1.3.4
./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared && make && make install
cd /opt
tar xzvf libtheora-1.1.1.tar.gz && rm -f libtheora-1.1.1.tar.gz
cd libtheora-1.1.1
./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-examples --disable-shared --disable-sdltest --disable-vorbistest && make && make install
cd /opt
tar xzvf vo-aacenc-0.1.2.tar.gz && rm -f vo-aacenc-0.1.2.tar.gz
cd vo-aacenc-0.1.2
./configure --prefix="$HOME/ffmpeg_build" --disable-shared && make install
yum -y remove yasm
cd /opt
tar xzfv yasm-1.2.0.tar.gz && rm -f yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && make install
export "PATH=$PATH:$HOME/bin"
cd /opt
git clone
cd libvpx
git checkout tags/v1.3.0
./configure --prefix="$HOME/ffmpeg_build" --disable-examples && make && make install
cd /opt
git clone git://
cd x264
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static && make install
export LD_LIBRARY_PATH=/usr/local/lib/:$HOME/ffmpeg_build/lib/
echo /usr/local/lib >> /etc/
echo $HOME/ffmpeg_build/lib/ >> /etc/
cd /opt
git clone git://
cd ffmpeg
git checkout release/2.2
./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" \
--extra-libs=-ldl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libfaac \
--enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libvo-aacenc --enable-libxvid --disable-ffplay \
--enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads --arch=x86_64 && make install
# Test the resulting ffmpeg binary
cp $HOME/bin/ffmpeg /usr/bin/
ffmpeg -v
Copy link

mr-deamon commented Oct 22, 2014

The very last line will - at least with version 2.2.9 of ffmpeg - fail with "Missing argument for option 'v'.". You can fix this by using -version instead of -v

Thank you very much for this script!!

Copy link

bateller commented Jan 20, 2015

Awesome tutorial / script.

Just a note... x264 is prohibited for commercial use without licensing.

Copy link

markdrury commented Jan 31, 2015

Very helpful -- thanks for sharing this!

Copy link

kopurando commented Feb 26, 2015

In case you're fine with a binary:
works on EC2 64bit

Copy link

thushan85 commented Mar 4, 2015

Thanks a lot :)

Copy link

mainfraame commented Jun 8, 2015

Awesome! Thank you!

  • You're missing the inclusion of libmp3lame.

cd /opt
curl -L -O
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --prefix="$HOME/ffmpeg_build" --disable-shared --enable-nasm && make && make install

Copy link

ahojchris commented Jul 14, 2015

Great Gist!

One minor update... the location of the libvpx repo has changed, so you'll want to replace this line:

git clone

with this:

git clone

Copy link

juandelacruz-calvo commented Sep 30, 2015

Thank you for the script, just perfect

Copy link

iumesh commented Nov 4, 2015

ffmpeg version n2.2.16-11-gbeaf272
built on Nov 4 2015 10:20:43 with gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-9)
configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --extra-libs=-ldl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libvo-aacenc --enable-libxvid --enable-ffplay --enable-ffprobe --enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads --arch=x86_64
libavutil 52. 66.100 / 52. 66.100
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.100 / 55. 33.100
libavdevice 55. 10.100 / 55. 10.100
libavfilter 4. 2.100 / 4. 2.100
libswscale 2. 5.102 / 2. 5.102
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100

i changed line 97, 98 and added --enable-ffprobe and --enable-ffplay but i cant find ffprobe and ffplay

can you tell me how to install ffprobe and ffplay

Copy link

davidwu0709 commented Jan 9, 2016

awesome, thanks.

Copy link

acl0056 commented Feb 4, 2016

@ahojchris Thank you so much!!!

Copy link

acl0056 commented Feb 5, 2016

@iumesh ffprobe and ffmpeg are in the /opt/ffmpeg directory. You can link or copy them to /usr/bin

Copy link

morrislaptop commented Mar 8, 2016

needs new git URL for libvpx -

Copy link

morrislaptop commented Mar 8, 2016

And ffmpeg -version at the end :)

Copy link

hoalongntc commented Mar 11, 2016

You saved me dude!

Copy link

robertBojor commented Mar 22, 2016

Awesome, thanks man!

Copy link

immortalize commented Apr 15, 2016

for some reason, there was a missing package called libraw1394 that failed the dependency, I've googled it and found on installeed it manually with rpm -Uvh ... that made it passed

Copy link

immortalize commented Apr 15, 2016

and I think a git repo is dead (fatal: not valid: is this a git repository?)
I've replaced git clone with git clone hoping that's same

Copy link

alfonsodev commented May 26, 2016

@immortalize you are right, the command yum -y install libdc1394 libdc1394-devel fails with ...

--> Finished Dependency Resolution
Error: Package: libraw1394-devel-2.0.4-1.el6.x86_64 (centos)
           Requires: libraw1394 = 2.0.4-1.el6
Error: Package: libdc1394-2.1.2-3.4.el6.x86_64 (centos)
Error: Package: libraw1394-devel-2.0.4-1.el6.x86_64 (centos)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Thanks for you solution

Copy link

alfonsodev commented May 27, 2016

I created a fork, it works as for today 27.05.16 in a fresh "amzn-ami-hvm-2015.09.1.x86_64-gp2" instance
The fork contains the fixes mentioned above,

  • repo libvpx
  • libraw1394
  • missing libmp3lame


  • removed x264 as is prohibited for commercial use without licensing
  • added fdk-aac
  • removed libvo-aacenc
  • ffmpeg updated to v3.0

Copy link

ghost commented Aug 24, 2016

repoforge/rpms#375 RepoForge is a dead project

Copy link

prashantmaurice commented Dec 2, 2016

WORKING FORK AS OF 2.12.2016 :
Yet another fork i created with few edits for my use after a changing code to run in AWS EC2 instances created by EBS


  1. clone into machine
  2. cd 07e52f970cbb1f6d10b5165344623b04
  3. chmod 777
  4. ./

Tested in :
EC Containers(Linux) of AWS

Removed Deprecated Options
Fixed with changes of RELEASE/3.0

Copy link

vitaly-zdanevich commented Oct 10, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment