環境信息: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