在 Devuan 上安裝 nvcc 並啟用 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
為了作為測試導入,並確保隨時可以恢復,我決定將其安裝在一般使用者的家目錄中。
移動目錄,使用 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 端確認,也明顯感覺到舒適度提升了一個檔次... 好像是這樣...!?
既然有了這些執行檔,如果我有空的話,我想嘗試進行編碼基準測試。那麼,下次再見。