= Compile FFmpeg on CentOS 6.0 = This guide is based on a minimal CentOS installation and will install FFmpeg with several external encoding libraries. This guide is kept relatively up to date with FFmpeg development and library sources (see the page [wiki:CentosCompilationGuide?action=history history] for changelog). '''Note:''' The # indicates that the command should be executed as superuser or root. == Preparation == Remove any existing packages: {{{ # yum erase ffmpeg x264 x264-devel }}} Get the dependencies: {{{ # yum install gcc git make nasm pkgconfig wget }}} Make a source directory: {{{ mkdir ~/ffmpeg-source }}} == Installation == === Yasm === Yasm is an assembler used by x264 and FFmpeg. {{{ cd ~/ffmpeg-source wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz tar xzvf yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure make # make install }}} '''Note:''' If you do not require certain encoders you may skip the relevant section and then remove the appropriate ./configure option in FFmpeg. For example, if libtheora is not needed, then skip that section and then remove ''--enable-libtheora'' from the [#ffmpeg Install FFmpeg] section. === x264 ===#x264 H.264 video encoder. {{{ cd ~/ffmpeg-source git clone git://git.videolan.org/x264 cd x264 ./configure --enable-static make # make install }}} === LAME === MP3 audio encoder. {{{ cd ~/ffmpeg-source wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --disable-shared --enable-nasm make # make install }}} === libogg === Required for libtheora and libvorbis. {{{ cd ~/ffmpeg-source wget http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz tar xzvf libogg-1.3.0.tar.gz cd libogg-1.3.0 ./configure --disable-shared make # make install }}} === libtheora === Theora video encoder. {{{ cd ~/ffmpeg-source wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz tar xzvf libtheora-1.1.1.tar.gz cd libtheora-1.1.1 ./configure --disable-shared make # make install }}} === libvorbis === Vorbis audio encoder. {{{ cd ~/ffmpeg-source wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz tar xzvf libvorbis-1.3.3.tar.gz cd libvorbis-1.3.3 ./configure --disable-shared make # make install }}} === vo-aacenc === !VisualOn AAC audio encoder. {{{ cd ~/ffmpeg-source wget http://downloads.sourceforge.net/opencore-amr/vo-aacenc-0.1.2.tar.gz tar xzvf vo-aacenc-0.1.2.tar.gz cd vo-aacenc-0.1.2 ./configure --disable-shared make # make install }}} === libvpx ===#libvpx VP8 video encoder. {{{ cd ~/ffmpeg-source git clone http://git.chromium.org/webm/libvpx.git cd libvpx ./configure make # make install }}} === zlib===#zlib ZLIB is required to decode and encode several formats including PNG. {{{ cd ~/ffmpeg-source wget http://zlib.net/zlib-1.2.7.tar.gz tar xzvf zlib-1.2.7.tar.gz cd zlib-1.2.7 ./configure make # make install }}} === FFmpeg ===#ffmpeg {{{ cd ~/ffmpeg-source git clone git://source.ffmpeg.org/ffmpeg cd ffmpeg ./configure --enable-gpl --enable-libmp3lame --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-version3 make # make install }}} Compilation is now complete and ffmpeg should now be ready to use. The rest of this guide shows how to update or remove FFmpeg. '''Note:''' Keep the ffmpeg-source directory and all contents if you intend to update or uninstall as shown below. == Updating x264, libvpx, and FFmpeg == First uninstall x264, libvpx, and FFmpeg: {{{ cd ~/ffmpeg-source/x264 # make uninstall cd ~/ffmpeg-source/ffmpeg # make uninstall cd ~/ffmpeg-source/libvpx # make uninstall }}} === Update x264 === {{{ cd ~/ffmpeg-source/x264 make distclean git pull }}} Then run ./configure, make, and make install as shown in the [#x264 Install x264] section. === Update libvpx === {{{ cd ~/ffmpeg-source/libvpx make clean git pull }}} Then run ./configure, make, and make install as shown in the [#libvpx Install libvpx] section. === Update FFmpeg === {{{ cd ~/ffmpeg-source/ffmpeg make distclean git pull }}} Then run ./configure, make, and make install as shown in the [#ffmpeg Install FFmpeg] section. == Reverting changes made by this guide == {{{ cd ~/ffmpeg-source/yasm-1.2.0 # make uninstall cd ../x264 # make uninstall cd ../lame-3.99.5 # make uninstall cd ../libogg-1.3.0 # make uninstall cd ../libtheora-1.1.1 # make uninstall cd ../libvorbis-1.3.3 # make uninstall cd ../libvpx # make uninstall cd ../vo-aacenc-0.1.2 # make uninstall cd ../zlib-1.2.7 # make uninstall cd ../ffmpeg # make uninstall rm -rf ~/ffmpeg-source # yum erase gcc git make nasm pkgconfig wget }}} {{{ #!comment Todo: Integrate installation via package management system instead of "make install" or install in home directory. Ignoring checkinstall as it is too much of a bitch to compile on CentOS 6.0. }}}