# FFmpeg compilation for Ubuntu 14.04 and 16.04.
# Alvaro Bustos. Thanks to Hunter.


sudo apt-get update
sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev mercurial cmake libx264-dev libfdk-aac-dev libmp3lame-dev

# Create a directory for sources.
SOURCES=$(mkdir ~/ffmpeg_sources)
cd ~/ffmpeg_sources

# Download the necessary sources.
# wget https://sources.voidlinux.eu/lame-3.100/lame-3.100.tar.gz
wget https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
# git clone --depth 1 git://git.videolan.org/x264
wget https://download.videolan.org/x264/snapshots/x264-snapshot-20180827-2245-stable.tar.bz2
# wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
wget https://netcologne.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.6.tar.gz
wget http://www.mirrorservice.org/sites/distfiles.macports.org/libopus/opus-1.2.1.tar.gz
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
# git clone --depth 1 git://source.ffmpeg.org/ffmpeg
wget http://ffmpeg.org/releases/ffmpeg-4.0.tar.gz

# Unpack files
for file in `ls ~/ffmpeg_sources/*.tar.*`; do
tar -xvf $file
done

cd yasm-*/
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && make && sudo make install && make distclean; cd ..

cd x264-*/
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --disable-opencl && PATH="$HOME/bin:$PATH" make && sudo make install && make distclean; cd ..

cd fdk-aac-*/
autoreconf -fiv && ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && make && sudo make install && make distclean; cd ..

cd lame-*/
./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared && make && sudo make install && make distclean; cd ..

cd opus-*/
./configure --prefix="$HOME/ffmpeg_build" --disable-shared && make && sudo make install && make distclean; cd ..

cd libvpx
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests && PATH="$HOME/bin:$PATH" make && sudo make install && make clean; cd ..

cd ffmpeg-*/
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include"  --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree && PATH="$HOME/bin:$PATH" make && sudo make install && make distclean && hash -r; cd ..

cd ~/bin
cp ffmpeg ffprobe vsyasm yasm ytasm /usr/local/bin

echo "FFmpeg Compilation is Finished!"

