Created
November 14, 2022 21:17
-
-
Save JCBuck/df073dbd530f40c6b93a40ef2b647531 to your computer and use it in GitHub Desktop.
Script to install ffmpeg with nvenc and cuvid hardware acceleration support
This file contains 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
sudo yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel -y | |
sudo yum install gnutls-devel -y | |
mkdir ~/ffmpeg_sources | |
# nasm | |
cd ~/ffmpeg_sources | |
curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 | |
tar xjvf nasm-2.14.02.tar.bz2 | |
cd nasm-2.14.02 | |
./autogen.sh | |
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" | |
make -j $(nproc) | |
make install | |
# yasm | |
cd ~/ffmpeg_sources | |
curl -O -L http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz | |
tar xzvf yasm-1.3.0.tar.gz | |
cd yasm-1.3.0 | |
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" | |
make -j $(nproc) | |
make install | |
# libxh264 | |
cd ~/ffmpeg_sources | |
git clone --depth 1 https://code.videolan.org/videolan/x264 | |
cd x264 | |
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic | |
make -j $(nproc) | |
make install | |
# ffmpeg nv codec pkg config headers | |
cd ~/ffmpeg_sources | |
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git | |
cd nv-codec-headers | |
git checkout n11.0.10.1 | |
sudo make install | |
# ffmpeg | |
cd ~/ffmpeg_sources | |
wget -q https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n4.4.2.tar.gz | |
tar -xf n4.4.2.tar.gz | |
mv FFmpeg-n4.4.2 ffmpeg | |
cd ffmpeg | |
ccap=37 | |
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig:/usr/local/lib/pkgconfig" ./configure \ | |
--prefix='/usr/' --extra-cflags='-I/usr/local/cuda/include' \ | |
--extra-ldflags='-L/usr/local/cuda/lib64' \ | |
--nvccflags="-gencode arch=compute_${ccap},code=sm_${ccap} -O2" \ | |
--disable-doc --disable-static --disable-bsfs --disable-decoders --disable-encoders \ | |
--disable-filters --disable-demuxers --disable-devices --disable-muxers \ | |
--disable-parsers --disable-postproc --disable-protocols --enable-decoder=aac \ | |
--enable-decoder=h264 --enable-decoder=h264_cuvid --enable-decoder=hevc_cuvid \ | |
--enable-decoder=rawvideo --enable-indev=lavfi --enable-encoder=libx264 \ | |
--enable-encoder=h264_nvenc --enable-encoder=hevc_nvenc \ | |
--enable-demuxer=mov --enable-demuxer=mp4 --enable-muxer=mp4 --enable-filter=scale \ | |
--enable-filter=testsrc2 --enable-protocol=file --enable-protocol=https \ | |
--enable-gnutls --enable-shared --enable-pic --enable-gpl --enable-nonfree \ | |
--enable-cuda-nvcc --enable-libx264 --enable-nvenc --enable-cuvid --enable-nvdec | |
#sudo bash -c 'PATH="/home/ec2-user/bin:$PATH" make -j $(nproc)' | |
make -j $(nproc) | |
sudo make install | |
hash -d ffmpeg | |
exit | |
# # ffmpeg | |
# cd ~/ffmpeg_sources | |
# curl -O -L 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" \ | |
# --extra-libs=-lpthread \ | |
# --extra-libs=-lm \ | |
# --bindir="$HOME/bin" \ | |
# --enable-gpl \ | |
# --enable-libfdk-aac \ | |
# --enable-libfreetype \ | |
# --enable-libmp3lame \ | |
# --enable-libopus \ | |
# --enable-libvpx \ | |
# --enable-libx264 \ | |
# --enable-libx265 \ | |
# --enable-nonfree | |
############# don't neeed below | |
# # libx265 | |
# cd ~/ffmpeg_sources | |
# git clone https://github.com/videolan/x265 | |
# cd ~/ffmpeg_sources/x265/build/linux | |
# cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source | |
# make -j $(nproc) | |
# make install | |
# # libfdk_aac | |
# cd ~/ffmpeg_sources | |
# git clone --depth 1 https://github.com/mstorsjo/fdk-aac | |
# cd fdk-aac | |
# autoreconf -fiv | |
# ./configure --prefix="$HOME/ffmpeg_build" --disable-shared | |
# make -j $(nproc) | |
# make install | |
# # libmp3lame | |
# cd ~/ffmpeg_sources | |
# curl -O -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz | |
# tar xzvf lame-3.100.tar.gz | |
# cd lame-3.100 | |
# ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm | |
# make -j $(nproc) | |
# make install | |
# # libopus | |
# cd ~/ffmpeg_sources | |
# curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.tar.gz | |
# tar xzvf opus-1.3.tar.gz | |
# cd opus-1.3 | |
# ./configure --prefix="$HOME/ffmpeg_build" --disable-shared | |
# make -j $(nproc) | |
# make install | |
# # libvpx | |
# cd ~/ffmpeg_sources | |
# git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git | |
# cd libvpx | |
# ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm | |
# make -j $(nproc) | |
# make install | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment