Install directory: /util/ffmpeg
#!/usr/bin/env bash
sudo apt install intel-mkl-full\
autogen \
librav1e-dev \
libssh-dev \
librsvg2-dev \
libbluray-dev \
libjack-jackd2-dev \
libva-dev \
libvdpau-dev \
libvdpau-va-gl1 \
libsvtav1-dev \
libzmq3-dev \
libzvbi-dev \
lv2-dev \
librist-dev \
libplacebo-dev \
libjxl-dev \
libdrm-dev \
libiec61883-dev \
libchromaprint-dev \
frei0r-plugins-dev \
ladspa-sdk \
libvo-amrwbenc-dev \
libaribb24-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopenjp2-7-dev \
libzimg-dev \
libbs2b-dev \
libcaca-dev \
libcdio-dev \
libcodec2-dev \
libdav1d-dev \
libfontconfig-dev \
libfreetype-dev \
libfribidi-dev \
glslang-dev \
libgsm1-dev \
libgsmme-dev \
libharfbuzz-dev \
librubberband-dev \
libshine-dev \
libsnappy-dev \
libsoxr-dev \
libopengl-dev \
libglut-dev \
libpulse-dev \
flite1-dev \
libaom-dev \
libao-dev \
liblilv-dev \
libavc1394-dev \
libdc1394-dev \
libgme-dev \
libalsaplayer-dev \
libsndio-dev \
libmysofa-dev \
libsdl1.2-dev \
libsdl2-dev \
libsdl2-image-dev \
portaudio19-dev \
libmpg123-dev \
libopenal-dev \
libcdio-cdda-dev \
libcdio-paranoia-dev \
libtinyxml2-dev \
libtinyxml-dev \
srt-tools \
yasm \
nasm \
asciidoc-base
# libass
git clone -b 0.17.4 git@github.com:libass/libass.git
cd libass
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared
make -j4
sudo make install
cd ..
# libfdk-aac
git clone -b v2.0.3 git@github.com:mstorsjo/fdk-aac.git libfdk-aac
cd libfdk-aac
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic
make -j4
sudo make install
cd ..
# mp3lame
wget https://unlimited.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
cd lame-3.100
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --enable-nasm --enable-mp3rtp
make -j4
sudo make install
cd ..
# libogg
git clone -b v1.3.6 git@github.com:xiph/ogg.git libogg
cd libogg
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic
make -j4
sudo make install
cd ..
# libvorbis
git clone -b v1.3.7 git@github.com:xiph/vorbis.git libvorbis
cd libvorbis
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --with-ogg=/util/ffmpeg --enable-docs
make -j1
sudo make install
cd ..
# libflac
git clone -b 1.5.0 git@github.com:xiph/flac.git libflac
cd libflac
sudo ln -s /usr/bin/libtoolize /util/bin/libtool
./autogen.sh
sudo rm /util/bin/libtool
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --with-ogg=/util/ffmpeg --disable-examples --enable-shared --enable-oss-fuzzers
make
sudo make install
cd ..
# libspeex
git clone -b Speex-1.2.1 git@github.com:xiph/speex.git libspeex
cd libspeex
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --enable-sse --with-fft=gpl-fftw3 --disable-binaries
make -j4
sudo make install
cd ..
# libopus
git clone -b v1.5.2 git@github.com:xiph/opus.git libopus
cd libopus
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --disable-extra-programs
make -j4
sudo make install
cd ..
# speexdsp
git clone -b SpeexDSP-1.2.1 git@github.com:xiph/speexdsp.git speexdsp
cd speexdsp
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" LDFLAGS="-lfftw3" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --disable-examples --enable-shared --with-fft=gpl-fftw3
make
sudo make install
cd ..
# libsndfile
git clone -b v1.0.30 git@github.com:libsndfile/libsndfile.git libsndfile
cd libsndfile
./autogen.sh
./configure --prefix=/util/ffmpeg --enable-shared --with-pic
make -j4
sudo make install
cd ..
# libtheora
git clone -b v1.2.0 git@github.com:xiph/theora.git libtheora
cd libtheora
/autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --with-ogg=/util/ffmpeg --with-vorbis=/util/ffmpeg --disable-examples
make -j4
sudo make install
cd ..
# libopenmpt
wget https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-0.8.3+release.autotools.tar.gz
tar -xvf libopenmpt-0.8.3+release.autotools.tar.gz
cd libopenmpt-0.8.3+release.autotools
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --with-pic --with-sdl2 --with-pulseaudio
make -j4
sudo make install
cd ..
# libsrt (/util)
git clone -b v1.5.4 git@github.com:Haivision/srt.git libsrt
cd libsrt && mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_BUILD_TYPE=Release -DOPENSSL_USE_STATIC_LIBS=ON -DENABLE_STDCXX_SYNC=ON -DENABLE_CLANG_TSA=ON -DATOMIC_USE_SRT_SYNC_MUTEX=ON ..
make -j4
sudo make install
cd ../..
# libsvt-av1
git clone -b v3.1.2 git@gitlab.com:AOMediaCodec/SVT-AV1.git libsvt-av1
cd libsvt-av1 && mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_BUILD_TYPE=Release -DSVT_AV1_LTO=ON -DNATIVE=ON -DSVT_AV1_PGO=OFF -DENABLE_AVX512=ON -DCOMPILE_C_ONLY=ON ..
make -j4
sudo make install
cd ../..
# libtwolame
git clone -b 0.4.0 git@github.com:njh/twolame.git libtwolame
cd libtwolame
./autogen.sh
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-shared --enable-static --enable-sndfile --with-pic
make -j4 || true
sudo make install || true
cd ..
# vidstab
git clone -b v1.1.1 git@github.com:georgmartius/vid.stab.git libvidstab
cd libvidstab && mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_BUILD_TYPE=Release ..
cd ../..
# libvpx
git clone -b v1.15.2 git@github.com:webmproject/libvpx.git libvpx
cd libvpx && mkdir build-ex && cd build-ex
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ../configure --prefix=/util/ffmpeg --enable-pic --enable-shared --enable-vp8 --enable-vp9 --enable-vp9-highbitdepth --enable-vp9-postproc --enable-vp9-temporal-denoising --enable-webm-io
make -j4
sudo make install
cd ../..
# libx264
git clone https://code.videolan.org/videolan/x264.git libx264
cd libx264
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg --enable-pic --enable-shared --enable-static --enable-bashcompletion --enable-strip
make -j4
sudo make install
cd ..
# libx265
git clone https://bitbucket.org/multicoreware/x265_git.git libx265
cd libx265 && mkdir build-ex && cd build-ex
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_BUILD_TYPE=Release -DNATIVE_BUILD=ON -DENABLE_SCC_EXT=ON -DENABLE_ALPHA=ON ../source/
make -j4
sudo make install
cd ../..
# libxvid
wget https://downloads.xvid.com/downloads/xvidcore-1.3.7.tar.gz
tar -xf xvidcore-1.3.7.tar.gz
cd xvidcore/build/generic
CC=clang CXX=clang++ CFLAGS="-O3 -mllvm -polly" ./configure --prefix=/util/ffmpeg
make -j4
sudo make install
cd ../../..
# ffmpeg
git clone -b 'release/8.0' https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg && mkdir build && cd build
../configure --prefix=/util/ffmpeg \
--extra-cflags='-O3 -mllvm -polly -I/util/include -I/util/ffmpeg/include' \
--extra-ldflags='-L/util/lib -L/util/ffmpeg/lib' \
--cc=clang --cxx=clang++ \
--enable-gpl --enable-nonfree \
--enable-shared \
--enable-libdc1394 \
--enable-libfdk-aac \
--enable-version3 \
--enable-gnutls \
--enable-libaom \
--enable-libass \
--enable-libbs2b \
--enable-libcaca \
--enable-libcdio \
--enable-libcodec2 \
--enable-libdav1d \
--enable-libflite \
--enable-libfontconfig \
--enable-libfreetype \
--enable-libfribidi \
--enable-libglslang \
--enable-libgme \
--enable-libgsm \
--enable-libharfbuzz \
--enable-libmp3lame \
--enable-libmysofa \
--enable-libopenjpeg \
--enable-libopenmpt \
--enable-libopus \
--enable-librubberband \
--enable-libshine \
--enable-libsnappy \
--enable-libsoxr \
--enable-libspeex \
--enable-libtheora \
--enable-libtwolame \
--enable-libvidstab \
--enable-libvorbis \
--enable-libvpx \
--enable-libwebp \
--enable-libx265 \
--enable-libxml2 \
--enable-libxvid \
--enable-libzimg \
--enable-openal \
--enable-opengl \
--enable-libaribb24 \
--enable-libopencore_amrnb \
--enable-libopencore_amrwb \
--enable-libvo_amrwbenc \
--enable-libdrm \
--enable-libiec61883 \
--enable-chromaprint \
--enable-frei0r \
--enable-ladspa \
--enable-libbluray \
--enable-libjack \
--enable-libpulse \
--enable-librist \
--enable-libsrt \
--enable-libssh \
--enable-libsvtav1 \
--enable-libx264 \
--enable-libzmq \
--enable-libzvbi \
--enable-lv2 \
--enable-sdl2 \
--enable-libplacebo \
--enable-librav1e \
--enable-librsvg \
--enable-libjxl
make -j4
sudo make install
cd ../..
# libzen0
git clone -b v0.4.41 git@github.com:MediaArea/ZenLib.git libzen0
cd libzen0
mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DENABLE_UNICODE=ON -DLARGE_FILES=ON ../Project/CMake
make -j4
sudo make install
cd ../..
# libmediainfo
git clone -b v25.09 git@github.com:MediaArea/MediaInfoLib.git libmediainfo
cd libmediainfo
mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_C_COMPILER=clang -DCMAKE_C_FLAGS="-O3 -mllvm -polly" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release ../Project/CMake
make -j4
sudo make install
find /util/ffmpeg/lib/cmake/mediainfolib -type f -name '*.cmake' | sed -e 'p;s/MediaInfoLib/mediainfolib/' | sudo xargs -n 2 ln -s
cd ../..
# mediainfo
git clone -b v25.09 git@github.com:MediaArea/MediaInfo.git mediainfo
cd mediainfo
mkdir build && cd build
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/util/ffmpeg -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/util/ffmpeg ../Project/CMake/CLI
make -j4
sudo make install
cd ../..