Установка nvcc на Devuan для включения NVENC и использования аппаратного кодирования
Здравствуйте, я бездарь.
Использование вышеупомянутого приложения Nextcloud оказалось настолько удобным, и, поскольку, похоже, можно включить аппаратное кодирование, я решил установить его по этому случаю.
https://developers.play.jp/entry/2022/11/18/181357#NVIDIA-のドライバーをインストール
Ориентируясь на этот сайт, я установлю максимально свежую версию.
Установка необходимых пакетов
sudo apt install autoconf automake bzip2 libbz2-dev cmake libfreetype6-dev gcc g++ git libtool make pkg-config zlib1g-dev nasm
Создание директорий
mkdir bin ffmpeg_build ffmpeg_sources
Чтобы установить это в качестве теста и иметь возможность отменить изменения в любой момент, я решил поместить это в домашнюю директорию обычного пользователя.
Перемещение директорий, загрузка последней версии nv-codec-headers с помощью wget, распаковка и сборка.
Затем загрузка исходного кода FFmpeg.
cd ~/ffmpeg_sources/
wget https://github.com/FFmpeg/nv-codec-headers/releases/download/n12.2.72.0/nv-codec-headers-12.2.72.0.tar.gz
ls -la
tar xf nv-codec-headers-12.2.72.0.tar.gz
ls -la
cd nv-codec-headers-12.2.72.0
make PREFIX=$HOME/ffmpeg_build
make install PREFIX=$HOME/ffmpeg_build
cd ..
wget https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.gz
ls -la
tar xf ffmpeg-7.0.1.tar.gz
ls -la
Затем установите nvidia-cuda-toolkit. На всякий случай я удаляю уже установленные компоненты в процессе.
wget https://developer.download.nvidia.com/compute/cuda/12.5.0/local_installers/cuda_12.5.0_555.42.02_linux.run
ls -la
sudo apt remove nvidia-cuda-toolkit
ls -la
chmod +x cuda_12.5.0_555.42.02_linux.run
sudo ./cuda_12.5.0_555.42.02_linux.run --silent --override --toolkit --no-opengl-libs
nvcc -V
На этом этапе я проверяю, установлен ли путь, и, поскольку это не так, я добавлю его в /etc/profile.
which nvcc
export PATH="/usr/local/cuda/bin:${PATH}"
which nvcc
sudo ldconfig
sudo vim /etc/profile
Я добавил это следующим образом.
На изображении, местоположение конечного исполняемого файла уже добавлено, но...
Причина, по которой я не указал $HOME, заключается в том, что это применяется ко всему, и если бы это был root, он бы искал в /home/root/bin, поэтому я добавляю это для текущего пользователя.
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "$(id -u)" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
export PATH="/usr/local/cuda/bin:${PATH}"
export PATH="/home/haturatu/bin:${PATH}"
~~~~
После этого я выполняю процесс сборки.
Попутно проверяю содержимое библиотеки.
cd nv-codec-headers-12.2.72.0
make PREFIX=$HOME/ffmpeg_build
make install PREFIX=$HOME/ffmpeg_build
cd ~/ffmpeg_sources
ls -la
cd ffmpeg-7.0.1
ls -la /usr/local/cuda/include
ls -la /usr/local/cuda/lib64
CFLAGS="-O3 -I/usr/local/cuda/include" LDFLAGS="-L/usr/local/cuda/lib64" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --bindir="$HOME/bin" --enable-nonfree --enable-gpl --enable-cuda-nvcc --enable-libnpp --disable-debug --disable-doc --enable-static
make -j 8
make install
Это сделано, но путь еще не указывает на новое местоположение исполняемого файла.
ffmpeg
ls ../bin
cd ~
ls bin
./bin/ffmpeg
which ffmpeg
ls bin
Укажите путь.
export PATH="/home/haturatu/bin:${PATH}"
which ffmpeg
sudo vim /etc/profile
#↑ Здесь я добавил PATH из вышеупомянутого раздела.
На этом всё.
Поскольку аппаратное кодирование с FFmpeg теперь успешно работает, я проверил это и со стороны Nextcloud, и стало заметно комфортнее, настолько, что я явно почувствовал разницу... или так кажется...!?
Поскольку у меня есть каждый исполняемый файл, если будет время, я попробую провести тесты производительности кодирования. До новых встреч.