Recently I had to compile ffmpeg from scratch on CentOS 7. The reason? I wanted libfdk_aac support. Here are my notes on the procedure. The how-to on https://trac.ffmpeg.org/wiki/CompilationGuide/Centos was actually quite helpful and accurate.
Install necessary dependencies and set up build folder
yum install autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel mkdir ~/ffmpeg_sources
Build necessary components
I only needed x264 and libfdk_aac, so that’s all I ended up doing:
#yasm 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 cd ~/ffmpeg_sources git clone --depth 1 git://git.videolan.org/x264 cd x264 PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static make make install make distclean
#libfdk_aac 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
Compile ffmpeg
I actually specified a git mirror because the sources at ffmpeg site were glacially slow.
cd ~/ffmpeg_sources git clone https://github.com/FFmpeg/FFmpeg.git 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-libx264 make make install make distclean hash -r
Optionally, remove existing ffmpeg
sudo yum remove ffmpeg
That was it! After a bit of compile time ffmpeg worked with the items I wanted it to.
your compile script for ffmpeg uses uppercase FF which breaks the process.
$HOME/ffmpeg_build on the dependencies
and
$HOME/FFmpeg_build on the ffmpeg part
other than that it worked great, thanks for posting
“I only needed x264 and libfdk_aac, so that’s all I ended up doing:”
I don’t get this… You’re writing a guide, but then narrow it down to fit only your unique subset of requirements. I recall some friends throwing a summer cookout for a dozen or so people when we were all young. I was helping them set up the self-serve condiments table. “Where’s the mustard?” I asked. “We don’t like mustard,” was the reply.