#!/bin/bash #ubuntu: 14.04+ # #install required things from apt installLibs() { echo "Installing prerequisites" sudo apt-get update sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-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 } #Compile nasm compileNasm() { echo "Compiling nasm" cd ~/ffmpeg_sources wget http://www.nasm.us/pub/nasm/releasebuilds/2.14rc0/nasm-2.14rc0.tar.gz tar xzvf nasm-2.14rc0.tar.gz cd nasm-2.14rc0 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make -j$(nproc) make -j$(nproc) install make -j$(nproc) distclean } #Compile libx264 compileLibX264() { echo "Compiling libx264" cd ~/ffmpeg_sources wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 tar xjvf last_x264.tar.bz2 cd x264-snapshot* PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static PATH="$HOME/bin:$PATH" make -j$(nproc) make -j$(nproc) install make -j$(nproc) distclean } #Compile libfdk-acc compileLibfdkcc() { echo "Compiling libfdk-cc" sudo apt-get install unzip cd ~/ffmpeg_sources wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master unzip fdk-aac.zip cd mstorsjo-fdk-aac* autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make -j$(nproc) make -j$(nproc) install make -j$(nproc) distclean } #Compile libmp3lame compileLibMP3Lame() { echo "Compiling libmp3lame" sudo apt-get install nasm cd ~/ffmpeg_sources wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared make -j$(nproc) make -j$(nproc) install make -j$(nproc) distclean } #Compile libopus compileLibOpus() { echo "Compiling libopus" cd ~/ffmpeg_sources wget http://downloads.xiph.org/releases/opus/opus-1.2.1.tar.gz tar xzvf opus-1.2.1.tar.gz cd opus-1.2.1 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make -j$(nproc) make -j$(nproc) install make -j$(nproc) distclean } #Compile libvpx compileLibPvx() { echo "Compiling libvpx" cd ~/ffmpeg_sources git clone https://chromium.googlesource.com/webm/libvpx cd libvpx PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --enable-runtime-cpu-detect --enable-vp9 --enable-vp8 \ --enable-postproc --enable-vp9-postproc --enable-multi-res-encoding --enable-webm-io --enable-better-hw-compatibility --enable-vp9-highbitdepth --enable-onthefly-bitpacking --enable-realtime-only \ --cpu=native --as=nasm PATH="$HOME/bin:$PATH" make -j$(nproc) make -j$(nproc) install make -j$(nproc) clean } #Compile ffmpeg compileFfmpeg() { echo "Compiling ffmpeg" cd ~/ffmpeg_sources git clone https://github.com/FFmpeg/FFmpeg -b master cd FFmpeg PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/ffmpeg_build" \ --extra-cflags="-I$HOME/ffmpeg_build/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib" \ --bindir="$HOME/bin" \ --enable-cuvid \ --enable-libnpp \ --enable-gpl \ --enable-libass \ --enable-libfdk-aac \ --enable-vaapi \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-nonfree \ --enable-lv2 \ --samples=fate-suite/ PATH="$HOME/bin:$PATH" make -j$(nproc) make -j$(nproc) install make -j$(nproc) distclean hash -r } #The process cd ~ mkdir ffmpeg_sources installLibs compileNasm compileLibX264 compileLibfdkcc compileLibMP3Lame compileLibOpus compileLibPvx compileFfmpeg echo "Complete!"