在 Devuan 上安装 nvcc 并启用 NVENC 以使用硬件编码

5 min

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

大家好,我是无能。

https://memories.gallery

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

为了作为测试进行安装,以便随时可以恢复,我决定将其放入普通用户的家目录中。

移动目录,使用 wget 保存并解压最新版 nv-codec-headers 并进行构建。
然后保存 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 端也进行了确认,感觉舒适度明显提升了... 好像是这样...!?

既然有了各自的可执行文件,如果有空的话,我想尝试进行编码基准测试。那么下次再见。

Related Posts