computers:ffmpeg:using_nvenc_cuda

This is an old revision of the document!


ffmpeg with NVENC/CUDA install on Linux

Need to compile, point libraries and build dirs to local user folder for build so that it is easier to remove and clean up if you mess up instead of putting directly into /usr/local, which is default.

Nvidia's guide, is well.. semi accurate, but not verbatim.

Install repo, install driver, reboot

apt install nvidia-cuda-toolkit

This worked better than doing the manual install given from Nvidia's website, but you can also manually compile to ~/ffmpeg_sources for the same effect.

 
mkdir -p ~/ffmpeg_sources ~/bin

sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev

additional packages

apt install nasm libx264-dev libx265-dev libnuma-dev libvpx-dev libfdk-aac-dev libopus-dev libdav1d-dev

#libaom, manual compile

cd ~/ffmpeg_sources && \
git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
mkdir -p aom_build && \
cd aom_build && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_TESTS=OFF -DENABLE_NASM=on ../aom && \
PATH="$HOME/bin:$PATH" make && \
make install
ldd /usr/local/bin/ffmpeg
	linux-vdso.so.1 (0x00007ffd5ed27000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f45a5902000)
	libnppig.so.11 => /lib/x86_64-linux-gnu/libnppig.so.11 (0x00007f45a3a35000)
	libnppicc.so.11 => /lib/x86_64-linux-gnu/libnppicc.so.11 (0x00007f45a3310000)
	libnppidei.so.11 => /lib/x86_64-linux-gnu/libnppidei.so.11 (0x00007f45a28b7000)
	libnppif.so.11 => /lib/x86_64-linux-gnu/libnppif.so.11 (0x00007f459ee2e000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f459ee28000)
	libvpx.so.6 => /lib/x86_64-linux-gnu/libvpx.so.6 (0x00007f459ec0b000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f459ebe9000)
	libdav1d.so.4 => /lib/x86_64-linux-gnu/libdav1d.so.4 (0x00007f459eab5000)
	libfdk-aac.so.2 => /lib/x86_64-linux-gnu/libfdk-aac.so.2 (0x00007f459e972000)
	libopus.so.0 => /lib/x86_64-linux-gnu/libopus.so.0 (0x00007f459e917000)
	libx264.so.160 => /lib/x86_64-linux-gnu/libx264.so.160 (0x00007f459e655000)
	libx265.so.192 => /lib/x86_64-linux-gnu/libx265.so.192 (0x00007f459d6d6000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f459d511000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f45a7823000)
	libnppc.so.11 => /lib/x86_64-linux-gnu/libnppc.so.11 (0x00007f459d280000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f459d275000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f459d0a8000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f459d08e000)
	libnuma.so.1 => /lib/x86_64-linux-gnu/libnuma.so.1 (0x00007f459d07e000)
cd ~/ffmpeg_sources && git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/
cd ffmpeg/

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"

Configure

./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-cflags=-I/usr/local/cuda/include --extra-ldflags="-L$HOME/ffmpeg_build/lib" --extra-ldflags=-L/usr/local/cuda/lib64 --extra-libs="-lpthread -lm" --ld="g++" --bindir="$HOME/bin" --enable-gpl --enable-libfdk-aac --enable-libopus --enable-libdav1d --enable-libvpx --enable-libx264 --enable-libx265

Compile

Sets the compiled app output to ~/bin

PATH="$HOME/bin:$PATH" make

Install

make install
cp ~/bin/ffmpeg /usr/local/bin/
  • computers/ffmpeg/using_nvenc_cuda.1652667340.txt.gz
  • Last modified: 2022/05/16 02:15
  • by jon