文章目录
1. 安装NVIDIA驱动
安装依赖包
sudo apt install -y ubuntu-drivers-common
编辑
/etc/modprobe.d/blacklist-nouveau.conf
文件,添加以下内容:blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off
关闭nouveau
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
重新生成内核并重启
sudo update-initramfs -u sudo reboot
重启后验证
lsmod | grep nouveau
如果没有输出,则禁用成功;
查找推荐驱动
ubuntu-drivers devices
输出如下:
安装推荐驱动
sudo apt install -y nvidia-driver-535-server
安装成功后重启执行
nvidia-smi
输出如下则证明驱动安装成功,注意这里的CUDA Version
为最高安装版本,并非已安装版本
2. 安装CUDA&NV-CODEC
2.1 安装CUDA
去NVIDIA官网直接下载不高于nvidia-smi
显示的版本,我们安装12.0版本,按照官网描述安装
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda-repo-ubuntu2004-12-0-local_12.0.0-525.60.13-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-0-local_12.0.0-525.60.13-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
安装成功后将以下内容加到/etc/profile
文件
export PATH=$PATH:/usr/local/cuda-12.0/bin/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.0/lib64
执行source /etc/profile
后执行nvcc --version
输出如下内容则证明安装成功
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Mon_Oct_24_19:12:58_PDT_2022
Cuda compilation tools, release 12.0, V12.0.76
Build cuda_12.0.r12.0/compiler.31968024_0
2.2 安装NV-CODEC
因为我们cuda安装的是12.0版本,因此执行以下指令安装ffnvcodec
,参考NVIDIA官网
git clone -b sdk/12.0 git@github.com:FFmpeg/nv-codec-headers.git
cd nv-codec-headers && sudo make install && cd –
3. 编译ffmpeg
3.1 安装依赖
sudo apt-get -y install \
build-essential \
pkg-config \
libtool \
automake \
yasm \
nasm \
cmake \
libtool \
libc6 \
libc6-dev \
unzip \
wget \
libnuma1 \
libnuma-dev \
libx264-dev \
libx265-dev \
libssl-dev \
librtmp-dev \
libsrt-dev \
libfreetype6-dev
3.2 下载源码安装依赖
前往ffmpeg官网下载ffmpeg源码,最好下载5以上版本,我用4.x版本编译时候有莫名报错,换到5版本一切正常;我们以ffmpeg-5.1.6
版本为例,解压后进入ffmpeg源码目录,执行以下命令
./configure \
--prefix=$(pwd)/install \
--extra-cflags="-I/usr/local/cuda/include" \
--extra-ldflags="-L/usr/local/cuda/lib64" \
--enable-shared \
--enable-static \
--extra-libs=-lstdc++ \
--enable-gpl \
--enable-version3 \
--enable-libfreetype \
--enable-libx264 \
--enable-libx265 \
--enable-openssl \
--enable-librtmp \
--enable-libsrt \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--enable-cuda-nvcc \
--enable-libnpp \
--enable-cuda \
--enable-cuvid \
--enable-nvenc \
--enable-nvdec \
--enable-nonfree
成功后会输出如下信息:
执行make -j$(nproc) && make install
即可在源码目录下生成install
目录;
3.3 验证
依然修改/etc/profile
将ffmpeg加入环境变量,大致效果如下:
export PATH=$PATH:/usr/local/cuda-12.0/bin/:/home/ffmpeg-5.1.6/install/bin/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.0/lib64:/home/ffmpeg-5.1.6/install/lib
执行source /etc/profile
生效环境变量,执行以下命令验证
ffmpeg -encoders | grep nvenc
输出如下内容,则证明成功
V....D h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)
V....D hevc_nvenc NVIDIA NVENC hevc encoder (codec hevc)
4. 使用
# H.264加速编码
ffmpeg -i input.mp4 -c:v h264_nvenc -b:v 2M -g 30 -c:a copy output_gpu_h264.mp4
# HEVC/H.265加速编码
ffmpeg -i input.mp4 -c:v hevc_nvenc -b:v 2M -g 30 -c:a copy output_gpu_h265.mp4