Here’s how to build and install FFmpeg 4.0 from source with all the bells and whistles (i.e codec support). We’ll install it as a custom Debian package using checkinstall
. That way, any other package that depends on the ffmpeg
package will recognize that it is already installed, and won’t try to fetch it from the Debian or Ubuntu software repositories.
Install the dependencies
sudo apt-get -y install build-essential autoconf automake cmake libtool git \ checkinstall mkdir ffmpegtemp cd ffmpegtemp mkdir aom cd aom git clone https://aomedia.googlesource.com/aom cmake aom/ make sudo checkinstall -y --deldoc=yes cd sudo apt-get -y install build-essential autoconf automake cmake libtool git \ checkinstall nasm yasm libass-dev libfreetype6-dev libsdl2-dev libtool \ libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev libchromaprint-dev \ frei0r-plugins-dev gnutls-dev ladspa-sdk libcaca-dev libcdio-paranoia-dev \ libcodec2-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgme-dev \ libgsm1-dev libjack-dev libmodplug-dev libmp3lame-dev libopencore-amrnb-dev \ libopencore-amrwb-dev libopenjp2-7-dev libopenmpt-dev libopus-dev \ libpulse-dev librsvg2-dev librubberband-dev librtmp-dev libshine-dev \ libsmbclient-dev libsnappy-dev libsoxr-dev libspeex-dev libssh-dev \ libtesseract-dev libtheora-dev libtwolame-dev libv4l-dev libvo-amrwbenc-dev \ libvorbis-dev libvpx-dev libwavpack-dev libwebp-dev libx264-dev libx265-dev \ libxvidcore-dev libxml2-dev libzmq3-dev libzvbi-dev liblilv-dev libmysofa-dev \ libopenal-dev opencl-dev
Install the non-free dependencies too, if you want to convert decrypted Blu-Ray content:
sudo apt-get -y install libbluray-dev libfdk-aac-dev
Download and extract the FFmpeg 4.0 source code
wget https://ffmpeg.org/releases/ffmpeg-4.0.tar.bz2 tar -xf ffmpeg-4.0.tar.bz2 rm ffmpeg-4.0.tar.bz2 cd ffmpeg-4.0
Configure the build
With free dependencies only
./configure --enable-gpl --enable-version3 --disable-static \ --enable-shared --enable-small--enable-avisynth --enable-chromaprint \ --enable-frei0r --enable-gmp --enable-gnutls --enable-ladspa \ --enable-libaom --enable-libass --enable-libcaca --enable-libcdio \ --enable-libcodec2 --enable-libfontconfig --enable-libfreetype \ --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack \ --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb \ --enable-libopencore-amrwb --enable-libopencore-amrwb \ --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse \ --enable-librsvg --enable-librubberband --enable-librtmp --enable-libshine \ --enable-libsmbclient --enable-libsnappy --enable-libsoxr --enable-libspeex \ --enable-libssh --enable-libtesseract --enable-libtheora \ --enable-libtwolame --enable-libv4l2 --enable-libvo-amrwbenc \ --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp \ --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 \ --enable-libzmq --enable-libzvbi --enable-lv2 --enable-libmysofa \ --enable-openal --enable-opencl --enable-opengl --enable-libdrm
Or, including non-free
./configure --enable-gpl --enable-version3 --disable-static \ --enable-shared --enable-small --enable-avisynth --enable-chromaprint \ --enable-frei0r --enable-gmp --enable-gnutls --enable-ladspa \ --enable-libaom --enable-libass --enable-libcaca --enable-libcdio \ --enable-libcodec2 --enable-libfontconfig --enable-libfreetype \ --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack \ --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb \ --enable-libopencore-amrwb --enable-libopencore-amrwb \ --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse \ --enable-librsvg --enable-librubberband --enable-librtmp --enable-libshine \ --enable-libsmbclient --enable-libsnappy --enable-libsoxr --enable-libspeex \ --enable-libssh --enable-libtesseract --enable-libtheora \ --enable-libtwolame --enable-libv4l2 --enable-libvo-amrwbenc \ --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp \ --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 \ --enable-libzmq --enable-libzvbi --enable-lv2 --enable-libmysofa \ --enable-openal --enable-opencl --enable-opengl --enable-libdrm \ --enable-nonfree --enable-libfdk-aac --enable-libbluray
Build
make
Purge any existing package installation
sudo apt-get -y purge ffmpeg "libav*" " libpostproc*" sudo apt-get -y autoremove
Install your custom FFmpeg build as a package
sudo checkinstall -y --deldoc=yes --pkgversion=10:4.0 cd .. rm -rf ffmpegtemp