How to compile and install FFmpeg 4.0 on Debian/Ubuntu

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 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

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.