步骤 1:确保 NVIDIA 驱动和 CUDA Toolkit 已安装

(1) 检查 NVIDIA 驱动

nvidia-smi  # 确保驱动已安装,且版本 ≥ 450.80.02

如果未安装,请:

  • Ubuntu/Debian

    sudo apt install nvidia-driver-535  # 推荐最新版
  • CentOS/RHEL

    sudo dnf install nvidia-driver

(2) 安装 CUDA Toolkit

# 官方 CUDA 安装指南(选择适合的版本):
# https://developer.nvidia.com/cuda-downloads

# Ubuntu/Debian 示例:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install -y cuda-toolkit-12-3  # 安装 CUDA 12.3

安装后,确保 nvcc 可用:

nvcc --version  # 应输出 CUDA 版本

(3) 设置环境变量

~/.bashrc~/.zshrc 添加:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

然后刷新:

source ~/.bashrc

步骤 2:重新编译 FFmpeg(确保启用 CUDA 和 NPP)

(1) 安装依赖

# Ubuntu/Debian
sudo apt update
sudo apt install -y build-essential yasm cmake libx264-dev libx265-dev libnpp-dev

(2) 下载 FFmpeg 源码,选择兼容驱动的版本

git clone https://git.ffmpeg.org/ffmpeg.git -b release/6.1
cd ffmpeg

(3) 配置时确保启用 CUDA 和 NPP

./configure \
  --enable-nonfree \
  --enable-cuda-nvcc \
  --enable-libnpp \  # 关键!启用 NVIDIA Performance Primitives
  --enable-filter=hwupload_cuda \  # 显式启用 CUDA 过滤器
  --enable-filter=scale_npp \      # 显式启用 NPP 缩放
  --extra-cflags="-I/usr/local/cuda/include" \
  --extra-ldflags="-L/usr/local/cuda/lib64"

make -j$(nproc)
sudo make install

(4) 验证编译结果

ffmpeg -hide_banner -filters | grep -E "cuda|npp"

输出应包含:

hwupload_cuda
scale_npp
overlay_cuda

步骤 3:测试 FFmpeg 硬件加速

运行测试命令:

ffmpeg -hwaccel cuda -i input.mp4 -vf "hwupload_cuda,scale_npp=w=1280:h=720" -c:v h264_nvenc output.mp4

如果成功,说明 CUDA 加速已正常工作。



1. 问题

  • ffnvcodec 缺失:这是 NVIDIA 的 FFmpeg 编解码器头文件,用于硬件加速。
  • libnpp 未正确链接:NVIDIA Performance Primitives (NPP) 库可能未安装或版本不匹配。

2. 解决方案

步骤 1:安装 ffnvcodec

(1) 下载 nv-codec-headers(即 ffnvcodec

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install  # 默认安装到 /usr/local/include/ffnvcodec

(2) 确保头文件能被找到

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

(如果 /usr/local/include/ffnvcodec 不存在,请检查安装路径)


步骤 2:确保 libnpp 已安装

(1) 安装 libnpp(NVIDIA Performance Primitives)

# Ubuntu/Debian
sudo apt install libnpp-dev  # 关键!

# CentOS/RHEL
sudo yum install nvidia-npp-devel

(2) 检查 libnpp 版本

dpkg -l | grep libnpp  # Ubuntu/Debian
rpm -qa | grep npp     # CentOS/RHEL

确保版本与 CUDA Toolkit 匹配(如 CUDA 12.x 需要 libnpp-12)。


步骤 3:重新编译 FFmpeg

(1) 清理旧配置

cd /path/to/ffmpeg
make distclean

标签: ffmpeg, cuda

添加新评论