Instalando nvcc no Devuan para habilitar NVENC e usar codificação de hardware

6 min

language: ja bn en es hi pt ru zh-cn zh-tw

Olá, sou um incompetente.

https://memories.gallery

Usar o aplicativo acima, que é um aplicativo do Nextcloud, foi tão conveniente que parece que a codificação de hardware também pode ser ativada, então aproveitei esta oportunidade para implementá-lo.

https://developers.play.jp/entry/2022/11/18/181357#NVIDIA-のドライバーをインストール

Com base neste site, instalarei a versão mais recente possível.

Instalar pacotes necessários

sudo apt install autoconf automake bzip2 libbz2-dev cmake libfreetype6-dev gcc g++ git libtool make pkg-config zlib1g-dev nasm

Criar diretório

mkdir bin ffmpeg_build ffmpeg_sources

Para implementá-lo como um teste e poder reverter a qualquer momento, decidi colocá-lo no diretório inicial de um usuário comum.

Mover diretório, salvar os nv-codec-headers mais recentes com wget, extrair e compilar.
E salvar o código-fonte do 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

Em seguida, instale o nvidia-cuda-toolkit. Por precaução, estou removendo o que já está instalado no meio do processo.

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

Neste ponto, verifico se o caminho está configurado e, como não está, adiciono-o ao /etc/profile.

which nvcc
export PATH="/usr/local/cuda/bin:${PATH}"
which nvcc
sudo ldconfig
sudo vim /etc/profile

Adicionei da seguinte forma.
Na imagem, o destino onde o arquivo executável final existe já foi adicionado, mas...
A razão pela qual não especifiquei com $HOME é que se aplicaria a tudo, e se fosse root, procuraria em /home/root/bin, então estou colocando-o para o usuário de execução atual.

# /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}"
~~~~

Depois disso, realizarei o processo de compilação.
Verifique o conteúdo da biblioteca no meio do processo.

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

Isso está feito, mas o caminho ainda não está apontando para o novo local do arquivo executável.

ffmpeg
ls ../bin
cd ~
ls bin
./bin/ffmpeg
which ffmpeg
ls bin

Especifique o caminho.

export PATH="/home/haturatu/bin:${PATH}"
which ffmpeg
sudo vim /etc/profile
#↑Aqui adicionei o PATH da parte mencionada anteriormente.

Isso é tudo.

Agora que a codificação de hardware com ffmpeg foi habilitada com sucesso, verifiquei também pelo lado do Nextcloud, e ficou confortável a um nível em que sinto claramente a diferença... ou assim parece...!?

Já que tenho cada arquivo executável, se tiver tempo, tentarei fazer um benchmark de codificação. Até a próxima.

Related Posts