This guide is based on aminimal installation of the latest CentOS release,and will provide a local,non-system installation of FFmpeg with support for several external encoding libraries. These instructions should also work for recent Red Hat Enterprise Linux (RHEL) andFedora. This is a non-invasive guide and undoing all steps is simple and is shown at the end of this page.
Get the Dependencies
These are required compiling,but you can remove them when you are done if you prefer (exceptmake
; it should be installed by default and many things depend on it).
# yum install autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel bzip2
In your home directory make a new directory to put all of the source code into:
mkdir ~/ffmpeg_sources
Compilation & Installation
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 libvorbis is not needed,then skip that section and then remove--enable-libvorbis
from theInstall FFmpegsection.
Yasm
Yasm is an assembler used by x264 and FFmpeg.
cd ~/ffmpeg_sources git clone --depth 1 git://github.com/yasm/yasm.git cd yasm autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make && make install make distclean
libx264
H.264 video encoder. See theH.264 Encoding Guidefor more information and usage examples.
Requiresffmpeg
to be configured with--enable-gpl
--enable-libx264
.
cd ~/ffmpeg_sources git clone --depth 1 git://git.videolan.org/x264 cd x264PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-staticmake && make installmake distclean
libx265
H.265/HEVCvideo encoder. See theH.265 Encoding Guidefor more information and usage examples.
--enable-gpl--enable-libx265
.
cd ~/ffmpeg_sources hg clone https://bitbucket.org/multicoreware/x265 cd ~/ffmpeg_sources/x265/build/linux cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source make make install
libfdk_aac
AAC audioencoder.
--enable-libfdk-aac(and--enable-nonfree
if you also included--enable-gpl
).
cd ~/ffmpeg_sources
git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make && make install && make distclean
libmp3lame
MP3 audio encoder.
--enable-libmp3lame.
cd ~/ffmpeg_sources curl -L -O 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 --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm make make install make distclean
libopus
Opus audiodecoder and encoder.
--enable-libopus.
cd ~/ffmpeg_sources git clone git://git.opus-codec.org/opus.git cd opus autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean
libogg
Oggbitstreamlibrary. required bylibtheoraandlibvorbis.
cd ~/ffmpeg_sources curl -O http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz tar xzvf libogg-1.3.2.tar.gz cd libogg-1.3.2 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean
libvorbis
Vorbisaudioencoder. Requireslibogg.
--enable-libvorbis.
cd ~/ffmpeg_sources curl -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz tar xzvf libvorbis-1.3.4.tar.gz cd libvorbis-1.3.4 LDFLAGS="-L$HOME/ffmeg_build/lib" CPPFLAGS="-I$HOME/ffmpeg_build/include" ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared make make install make distclean
libvpx
VP8/VP9 video encoder.
--enable-libvpx.
地址要改为https://github.com/webmproject/libvpx/ git clonehttps://github.com/webmproject/libvpx
cd ~/ffmpeg_sources git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git cd libvpx ./configure --prefix="$HOME/ffmpeg_build" --disable-examples make make install make clean
FFmpeg
cd ~/ffmpeg_sources git clone --depth 1 git://source.ffmpeg.org/ffmpeg cd ffmpeg PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 make && make install && make distclean hash -r
Compilation is now complete andffmpeg
(alsoffprobe
,ffserver
,250)">lame,andx264
) should now be ready to use. The rest of this guide shows how to update or remove FFmpeg.
编译完成后,会:
Tip:Keep theffmpeg_sources
directory and all contents if you intend toupdateas shown below. Otherwise you can delete this directory.
Updating
Development of FFmpeg is active and an occasional update can give you new features and bug fixes. First,remove the old files and then update the dependencies:
rm -rf ~/ffmpeg_build ~/bin/{ffmpeg,ffprobe,ffserver,lame,vsyasm,x264,x265,yasm,ytasm} # yum install autoconf automake cmake gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel
Update Yasm
cd ~/ffmpeg_sources/yasm make distclean git pull
Then run./configure
,250)">make,250)">make installas shown in theInstall yasmsection.
Update x264
cd ~/ffmpeg_sources/x264 make distclean git pull
make installas shown in theInstall x264section.
Update x265
cd ~/ffmpeg_sources/x265 rm -rf ~/ffmpeg_sources/x265/build/linux/* hg update cd ~/ffmpeg_sources/x265/build/linux
cmake,250)">make installas shown in theInstall x265section.
Update libfdk_aac
cd ~/ffmpeg_sources/fdk_aac make distclean git pull
make installas shown in theInstall libfdk_aacsection.
Update libvpx
cd ~/ffmpeg_sources/libvpx make clean git pull
make installas shown in theInstall libvpxsection.
Update FFmpeg
cd ~/ffmpeg_sources/ffmpeg make distclean git pull
make installas shown in theInstall FFmpegsection.
Reverting changes made by this guide
rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ytasm} # yum erase autoconf automake cmake gcc gcc-c++ git libtool mercurial nasm pkgconfig zlib-devel hash -r
If You Need Help
Feel free to ask your questions at the #ffmpeg IRC channel or theffmpeg-usermailing list.
Also See