Forked from richardzhang0301/compile-ffmpeg-nvenc.sh
Last active
September 6, 2017 08:57
-
-
Save xseignard/8e0cecd8a9466ba5445a3ceaec1338a0 to your computer and use it in GitHub Desktop.
This bash script will compile a static Ffmpeg build with NVENC hardware-accelerated support on Ubuntu in your home directory. You can modify the script to customize the build options as you see fit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#This script will compile and install a static ffmpeg build with support for nvenc un ubuntu. | |
#See the prefix path and compile options if edits are needed to suit your needs. | |
#install required things from apt | |
installLibs(){ | |
echo "Installing prerequisites" | |
sudo apt-get update | |
sudo apt-get -y install git autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \ | |
libsdl1.2-dev libtheora-dev libtool libass-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ | |
libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev | |
} | |
#Install nvidia SDK | |
installSDK(){ | |
echo "Installing the nVidia NVENC SDK." | |
cd ~/ffmpeg_sources | |
mkdir SDK | |
cd SDK | |
wget https://hear360.co/Video_Codec_SDK_8.0.14.zip -O sdk.zip | |
unzip sdk.zip | |
cd Video_Codec_SDK_8.0.14 | |
sudo cp Samples/common/inc/* /usr/include/ | |
} | |
#Compile nasm | |
compileNasm(){ | |
echo "Compiling nasm" | |
cd ~/ffmpeg_sources | |
wget http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz | |
tar -xf nasm-2.13.01.tar.xz | |
cd nasm-2.13.01 | |
./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-pic --enable-static | |
PATH="$HOME/bin:$PATH" make -j$(nproc) | |
make -j$(nproc) install | |
make -j$(nproc) distclean | |
} | |
#Compile libfdk-acc | |
compileLibfdkaac(){ | |
echo "Compiling libfdk-acc" | |
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 libvpx | |
compileLibPvx(){ | |
echo "Compiling libvpx" | |
cd ~/ffmpeg_sources | |
wget https://github.com/webmproject/libvpx/archive/v1.6.1.zip | |
unzip libvpx-1.6.1.zip | |
cd libvpx-1.6.1 | |
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples | |
PATH="$HOME/bin:$PATH" make -j$(nproc) | |
make -j$(nproc) install | |
make -j$(nproc) clean | |
} | |
#Compile ffmpeg | |
compileFfmpeg(){ | |
echo "Compiling ffmpeg" | |
cd ~/ffmpeg_sources | |
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 | |
tar xjvf ffmpeg-snapshot.tar.bz2 | |
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-gpl \ | |
--enable-libass \ | |
--enable-libfdk-aac \ | |
--enable-libx264 \ | |
--enable-libvorbis \ | |
--enable-libvpx \ | |
--enable-nonfree \ | |
--enable-nvenc | |
PATH="$HOME/bin:$PATH" make -j$(nproc) | |
make -j$(nproc) install | |
make -j$(nproc) distclean | |
hash -r | |
} | |
#The process | |
cd ~ | |
mkdir ffmpeg_sources | |
installLibs | |
installSDK | |
compileNasm | |
compileLibX264 | |
compileLibfdkaac | |
compileLibPvx | |
compileFfmpeg | |
echo "Complete!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment