环境信息:Ubuntu20.04 aarch64版本 + ffmpeg4.2.5 + cuda11
ffmpeg的编译流程这里简单回顾一下:
1.下载ffmpeg源码,下载nv-codec-headers
2.编译和安装nv-codec-headers
3.编译ffmpeg
我的configure 选项是这样的
./configure --enable-shared \ --disable-static \ --disable-doc \ --disable-ffplay \ --disable-ffmpeg \ --disable-ffprobe \ --enable-gpl \ --enable-libx264 \ --enable-libx265 \ --enable-cuda \ --enable-cuvid \ --enable-nvenc \ --enable-nvdec \ --enable-nonfree \ --enable-libnpp \ --enable-debug \ --extra-cflags=-I/usr/local/cuda/include \ --extra-ldflags=-L/usr/local/cuda/lib64 && \ make && make install
这段代码在我的amd64平台是可以编译通过的,但是这里报了如下错误:ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec
网上搜了一圈,都是说缺少nv-codec-headers,或者PKG_CONFIG_PATH未设置正确。但是我反序尝试了,都有问题。
以下是我的nv-codec-headers的安装情况,确实是安装并且能被识别到的(amd64平台相同代码是可以的)。
开始怀疑是arm版本的nv-codec-headers有区别,特意是官网搜了下,发现并没有区分arm和x86平台,而且这只是一些头文件。
接着又想了下是否是cuda版本过低的问题,于是在依次试了几个版本的cuda后仍然存在该问题。
最后,实在没办法了,换了最新版本的ffmpeg,该问题得到解决。
结论:ffmpeg+cuda在arm下编译注意ffmpeg的版本一定不能低于4.4