Driver does not support the required nvenc API version. Required: 12.2 Found: 12.0
问题引出
在使用ffmpeg GPU硬解码时,出现了这个错误,现在来解释一下为什么会出现这个问题。根据字面意思来看,就是nvidia驱动与nv-codec-headers版本不匹配。
发现是版本不匹配后就有两个解决思路,一个是升高nvidia驱动版本(太有风险,有可能会黑屏),故而选择了第二种方法,将nv-codec-headers的版本降低,步骤如下:
1、在官网上下载一个符合现在nvidia驱动版本的nv-codec-headers版本:
地址为:[https://github.com/FFmpeg/nv-codec-headers/tree/master](https://github.com/FFmpeg/nv-codec-headers/tree/master)
点击左上master选择之前版本的分支,一定要阅读readme,看是否<=当前驱动版本!!!
选择完毕之后,点击code下载zip压缩文件。下载压缩文件后,进行编译安装。
2.编译安装nv-codec-headers:
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
通过命令来验证是否安装成功:
pkg-config --modversion ffnvcodec
显示如下即为安装成功:
3、重新编译安装ffmpeg:
./configure --enable-gpl --enable-libx264 --enable-nvenc --enable-cuda --enable-cuvid --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
make
sudo make install
4、测试一下:
ffmpeg -hwaccel cuda -i fighttest2.avi -c:v h264_nvenc -c:a copy fight.avi
报错已经没有了!