-
-
Save ropelletier/85b75cb49252d8981cddfbe6976f2e2d to your computer and use it in GitHub Desktop.
Build FFMPEG with NVIDIA hardware accelleration libraries on Debian 11. Includes non-free libnpp!
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
#!/bin/bash | |
# Automatically compile and install FFMPEG with NVIDIA hardware acceleration on Debian 12 | |
# Includes cuvid, cuda, nvenc, nvdec, and non-free libnpp | |
# Based on: | |
# https://www.tal.org/tutorials/ffmpeg_nvidia_encode | |
# https://developer.nvidia.com/blog/nvidia-ffmpeg-transcoding-guide/ | |
# Abort on error | |
set -e | |
suite=$(source /etc/os-release && echo $VERSION_CODENAME) | |
# Install libavcodec-extra manually so the build-deps step doesn't pull the problematic libavcodec59 | |
# libjs-bootstrap is a dependency of ffmpeg-doc | |
# devscripts contains the dch command | |
sudo apt-get install libavcodec-extra libjs-bootstrap devscripts | |
sudo apt-mark auto libavcodec-extra libjs-bootstrap devscripts | |
sudo apt-get build-dep ffmpeg -t $suite | |
sudo apt-get install nvidia-cuda-toolkit -t $suite | |
mkdir -p ffmpeg-deb/src | |
cd ffmpeg-deb | |
if [[ -d nv-codec-headers ]] | |
then | |
cd nv-codec-headers | |
git fetch --tags | |
else | |
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git | |
cd nv-codec-headers | |
fi | |
# Checkout latest release, intead of HEAD. The Debian driver in stable may not yet support the pre-release API. | |
git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) | |
make | |
sudo make install | |
cd ../src | |
rm -rf ./* | |
sudo apt-get source ffmpeg -t $suite | |
export DEB_BUILD_OPTIONS=nocheck | |
echo "override_dh_shlibdeps: | |
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info" >> debian/rules | |
cd ffmpeg-* | |
sed -i 's/--enable-sdl2/--enable-sdl2 --enable-cuda --enable-cuvid --enable-nvdec --enable-nvenc --enable-libnpp --enable-nonfree/' debian/rules | |
DEBEMAIL="root@local" DEBFULLNAME="script" dch --local "+nvidiasupport" "Compiled with support for nvidia hardware acceleration" | |
DEB_BUILD_OPTIONS="nocheck notest" dpkg-buildpackage -r -nc --jobs=auto --no-sign | |
cd .. | |
# Install all built packages, except the non-extra variants of libavfilter, libavcodec and libavformat | |
sudo dpkg -i $(ls *.deb | grep -Ev "(libavfilter|libavcodec|libavformat)[0-9]+_") | |
echo "Verification:" | |
ffmpeg -codecs 2> /dev/null | grep nvenc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment