-
-
Save RileyMShea/4de4465dda4931d4392662f1db3d4938 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# Changed to work with Ubuntu 19.04 from Brainiarc7 script | |
#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 | |
} | |
#install CUDA SDK | |
InstallCUDASDK(){ | |
echo "Installing CUDA and the latest driver repositories from repositories" | |
cd ~/ffmpeg_sources | |
wget -c -v -nc https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.2.88-1_amd64.deb | |
sudo dpkg -i cuda-repo-ubuntu1604_9.2.88-1_amd64.deb | |
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub | |
sudo apt-get -y update | |
sudo apt-get -y install cuda | |
sudo add-apt-repository ppa:graphics-drivers/ppa | |
sudo apt-get update && sudo apt-get -y upgrade | |
} | |
#Install nvidia SDK | |
installSDK(){ | |
echo "Installing the nVidia NVENC SDK." | |
cd ~/ffmpeg_sources | |
cd ~/ffmpeg_sources | |
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git | |
cd nv-codec-headers | |
make | |
sudo make install | |
} | |
#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(){ | |
cd ~/ffmpeg_sources && \ | |
wget -O ffmpeg-snapshot.tar.bz2 https://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" \ | |
--pkg-config-flags="--static" \ | |
--extra-cflags="-I$HOME/ffmpeg_build/include" \ | |
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \ | |
--bindir="$HOME/bin" \ | |
--enable-cuda-sdk \ | |
--enable-cuvid \ | |
--enable-libnpp \ | |
--extra-cflags="-I/usr/local/cuda/include/" \ | |
--extra-ldflags=-L/usr/local/cuda/lib64/ \ | |
--enable-gpl \ | |
--enable-libass \ | |
--enable-libfdk-aac \ | |
--enable-vaapi \ | |
--enable-libfreetype \ | |
--enable-libmp3lame \ | |
--enable-libopus \ | |
--enable-libtheora \ | |
--enable-libvorbis \ | |
--enable-libvpx \ | |
--enable-libx264 \ | |
--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 | |
InstallCUDASDK | |
installSDK | |
compileNasm | |
compileLibX264 | |
compileLibfdkcc | |
compileLibMP3Lame | |
compileLibOpus | |
compileLibPvx | |
compileFfmpeg | |
echo "Complete!" |
It seems to be stuck at the last part (build ffmpeg) so I cut out all the rest from the script, and even tried to run this command line here manually, but strangely enough even ./configure refuses to work, as seen below:
(edited out as seen below...)
unbelievable... it was only a matter of including "sudo" before each command inside the script... it is running ./configure now, waiting to see if it will succeed
stopped with error right after creating files in "Docs" directory (at the last steps I suppose)
Tried 3 different automated scripts until now, have all the dependencies installed for all of them (including the ones referred at the official ffmpeg site) and can't make this thing work. "It's easy" they said. "Linux is cool" they said. XDDD
Tried to use your script on stock Xubuntu 16.04.3 ("stock" meaning I never run sudo apt-get upgrade or dist upgrade, only sudo apt-get update)
Doesn't work, up until the last steps, which are for building the ffmpeg executable itself.
Here are the last output lines of the terminal, can you perhaps guess where it is failing? (I don't have experience with compiling)
(edited out as seen below...)