编译安装ffmpeg,并编译cuda相关
步骤 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