Instalar nvcc en Devuan para habilitar NVENC y usar la codificación por hardware
Hola, soy un inútil.
Usar la aplicación de Nextcloud mencionada anteriormente fue demasiado conveniente, y como la codificación por hardware también se puede habilitar, decidí instalarla en esta ocasión.
https://developers.play.jp/entry/2022/11/18/181357#NVIDIA-のドライバーをインストール
Tomando como referencia este sitio, instalaré la versión más reciente posible.
Instalar los paquetes necesarios
sudo apt install autoconf automake bzip2 libbz2-dev cmake libfreetype6-dev gcc g++ git libtool make pkg-config zlib1g-dev nasm
Crear directorio
mkdir bin ffmpeg_build ffmpeg_sources
Para instalarlo como prueba y poder revertirlo en cualquier momento, decidí colocarlo en el directorio de inicio de un usuario normal.
Mover el directorio, guardar la última versión de nv-codec-headers con wget, extraerla y compilarla.
Luego, guardar el código fuente de 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
Y luego, instalaré nvidia-cuda-toolkit. Por si acaso, estoy eliminando lo que ya está instalado a mitad del proceso.
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
En este punto, verifico si la ruta está configurada, y como no lo está, la añadiré a /etc/profile.
which nvcc
export PATH="/usr/local/cuda/bin:${PATH}"
which nvcc
sudo ldconfig
sudo vim /etc/profile
Lo añadí de la siguiente manera.
En la imagen, ya he añadido la ubicación donde se encuentra el archivo ejecutable final...
La razón por la que no lo especifiqué con $HOME es porque se aplicaría a todo, y si fuera root, buscaría en /home/root/bin, así que lo estoy incluyendo para el usuario de ejecución actual.
# /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}"
~~~~
Después de eso, realizaré el proceso de compilación.
Verificaré el contenido de la biblioteca a mitad del proceso.
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
Esto está hecho, pero la ruta aún no apunta a la nueva ubicación del archivo ejecutable.
ffmpeg
ls ../bin
cd ~
ls bin
./bin/ffmpeg
which ffmpeg
ls bin
Especificar la ruta.
export PATH="/home/haturatu/bin:${PATH}"
which ffmpeg
sudo vim /etc/profile
#↑ここで前述の部分のPATHを追加した。
Con esto hemos terminado.
Como la codificación por hardware ya es posible con ffmpeg, también lo comprobé desde Nextcloud y se volvió cómodo a un nivel en el que se siente una clara diferencia... ¡¿o eso parece...?!
Ya que tengo cada archivo ejecutable, si tengo tiempo, intentaré hacer un benchmark de codificación. ¡Hasta la próxima!