0. 官方教程
NVIDIA官方教程:链接,本篇内容主要参考2.2 Software Setup。
1. 安装显卡驱动
确保nvidia-smi能够正常使用:
2. 安装CUDA toolkit
注意要与显卡驱动版本对应,验证toolkit是否正确安装:
3. 安装ffnvcodec
- 下载地址
- 编译方法:解压进入文件夹后
sudo make install
- 验证安装
pkg-config --modversion ffnvcodec
显示版本号证明安装成功:
4. 编译安装FFmpeg
- 下载地址
- 配置方法:
- 进入ffmpeg-x.x文件夹
- 调用./configure进行配置(注意配置正确的CUDA库路径)
./configure --enable-cuda
--enable-cuvid
--enable-nvenc
--enable-nonfree
--enable-libnpp
--extra-cflags=-I/usr/local/cuda/include #CUDA头文件路径
--extra-ldflags=-L/usr/local/cuda/lib64 #CUDA lib路径
- 多线程编译
make -j -s
- 验证硬件加速是否启用成功
./ffmpeg -hwaccels
左下角显示CUDA即为配置成功:
- 安装到系统路径中
make install
5. 测试效果
可以连接YUV格式的输入设备或者使用网上下载的.yuv文件进行测试,具体可以参考如下指令:
ffmpeg -c:v rawvideo
-pix_fmt yuv420p # 输入视频格式为yuv420p
-s <width>x<height> # 输入视频分辨率
-i <input_file> # 输入视频文件路径或者设备号
-c:v h264_nvenc # 调用NVENC的H264编码器
-preset fast # 视频编码速度(影响质量)
-b:v <bitrate> # 设置比特率
<output_file> # 输出文件路径
下面用我配置好的FFmpeg进行测试:
最终保存成H.264编码的mp4文件:
6. 总结
目前只是对FFmpeg工具的一个初步探索,具体的参数配置方面还没有深入去研究,接下来可能会去调研一下NVIDIA Video Codec SDK二次开发的内容。因为本人接触视频编码内容时间很短,了解也较为浅显,如有错误,希望指出,感谢阅读~