今天在ffmpeg4.1下成功编译出支持cuda编码的版本,记录一下编译过程。
编译增加选项--enable-cuda --enable-cuvid --enable-nvenc
如果遇到提示错误
ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec
说明需要下载nvenc的头文件。
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
安装后重新编译,仍然提示找不到ffnvcodec,这时需要把ffnvcodec.pc的路径加入环境变量中。
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
重新编译,遇到新的报错:
[nvenc_hevc @ 0x3f928c0] Driver does not support the required nvenc API version. Required: 9.1 Found: 8.1
[nvenc_hevc @ 0x3f928c0] The minimum required Nvidia driver for nvenc is 390.25 or newer
猜测原因可能是nv-codec-headers的版本是9.1,但是Nvidia driver版本只支持8.1。查看nv-codec-headers的所有tag,checkout到8.1版本,重新编译ffmpeg成功。