Skip to content

Instantly share code, notes, and snippets.

@Anan5a
Created September 5, 2020 10:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Anan5a/e927a8f41d59a3c18bb5113de634fb8b to your computer and use it in GitHub Desktop.
Save Anan5a/e927a8f41d59a3c18bb5113de634fb8b to your computer and use it in GitHub Desktop.
#!/bin/bash
# This script is tested on Debian 10 with non-free source added
echo "Building shared ffmpeg executable with vaapi, fdkaac, zimg ..."
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/lib:/usr/lib
echo "Installing build tools ..."
apt -qqy install build-essential autoconf automake cmake libtool git nasm yasm
PROC=$(nproc)
mkdir ffmpegtemp
cd ffmpegtemp
#To build with AV1 uncomment below code and add --enable-aom switch in ffmpeg configure option
#mkdir aom
#cd aom
#git clone https://aomedia.googlesource.com/aom
#cmake aom/ -DBUILD_SHARED_LIBS=1
#make -j$PROC
#make install
#cd ..
echo "Installing AviSynthPlus ..."
git clone https://github.com/pinterf/AviSynthPlus.git
cd AviSynthPlus
make install
cd ..
echo "Installing zimg ..."
git clone https://github.com/sekrit-twc/zimg.git
cd zimg
./autogen.sh
./configure
make -j$PROC
make install
cd ..
cd ..
echo "Installing needed dependencies ..."
apt -qqy install libmysofa-dev libfdk-aac-dev libbluray-dev build-essential autoconf automake cmake libtool git nasm yasm libass-dev libfreetype6-dev libsdl2-dev p11-kit 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 libopenal-dev opencl-dev libjack-dev
echo "Getting ffmpeg source ..."
git clone git://source.ffmpeg.org/ffmpeg ffmpeg-master
cd ffmpeg-master
echo "Configuring ffmpeg ..."
./configure \
--extra-version=anan5a-$(date +%F) \
--enable-gpl \
--enable-version3 \
--disable-shared \
--enable-vaapi \
--enable-small \
--enable-avisynth \
--enable-chromaprint \
--enable-frei0r \
--enable-gmp \
--enable-gnutls \
--enable-ladspa \
--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-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-openal \
--enable-opencl \
--enable-opengl \
--enable-libdrm \
--enable-nonfree \
--enable-libfdk-aac \
--enable-libbluray \
--enable-libzimg
echo "####### Building ffmpeg with ${PROC} threads ... #######"
make -j$PROC
apt -qqy purge ffmpeg
apt -qqy autoremove
make uninstall
make install
cd ..
#rm -rf ffmpeg-master
cd ..
#rm -rf ffmpegtemp
pwd
echo "Done building ..."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment