错误:请求了 cuvid,但并非所有依赖项都得到满足:cuda/ffnvcodec

错误:请求了 cuvid,但并非所有依赖项都得到满足:cuda/ffnvcodec

我正在尝试在 Debian 9.3 上编译支持 Nvidia Cuda 的 FFMPEG。我使用的参数如下:

--enable-cuda --enable-cuvid --enable-nvenc --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-gpl --enable-libx264 --disable-x86asm --enable-libx265 --enable-libfdk-aac --enable-nonfree

已安装 Nvidia Cuda 及其驱动程序。当我尝试配置 ffmpeg 时,它显示:

ERROR: cuvid requested, but not all dependencies are satisfied: cuda

较新的 ffmpeg 将显示类似的、重新措辞的消息:

ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec

我完全不知道为什么我会遇到这个问题,因为我正在ffmpeg我们所有的转码服务器上进行编译。

答案1

NVIDIA 标头已从 FFmpeg 代码库移出到独立存储库提交27cbbbb. 从提交信息中:

ffmpeg 代码库不再欢迎外部标头,因为它们会增加维护负担。但是,在 NVidia 的情况下,原始标头需要进行一些修改才能在 ffmpeg 中使用,因此我们仍然提供它们,但在单独的存储库中。

另外,来自FFmpeg 维基:HWAccelIntro

FFmpeg 现在使用其自己的略微修改过的运行时加载器来处理 nvidias CUDA/nvenc/nvdec 相关库。如果您从 configure 中收到有关缺少 ffnvcodec 的错误,就是您所需要的。

它有Makefile一个安装目标:

make install PREFIX=/usr

FFmpeg 将查找pkg-config名为 的文件 ffnvcodec.pc。确保它在您的 中PKG_CONFIG_PATH

要编译 FFmpeg NVIDIA 标头(“ffnvcodec”):

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install

现在像往常一样编译ffmpeg。应该自动检测标题。如果没有,则声明指向运行时位于FFmpegPKG_CONFIG_PATH的路径。例如:ffnvcodec.pcconfigure

PKG_CONFIG_PATH="/path/to/lib/pkgconfig" ./configure

答案2

我遇到了类似的错误,但结果发现,这是由于缺少工具包配置引起的。在 Ubuntu 16.04 上,你可以运行

apt-get install pkgconf

并检查丢失的包是否真的丢失:

pkgconf --list-all | grep package-name

答案3

这可能是由于 nv-codec-headers 和 FFmpeg 之间的版本不匹配而导致的。原因:我遵循了特定的说明,将 nv-codec-headers 固定为 n8.2.15.8,但将 FFmpeg 保留在 master 上。

从标签 n4.4 开始,FFmpeg 需要该CUVIDAV1PICPARAMS结构。该结构仅在从标签 n11.0.10.0 开始的 nv-codec-headers 的 dynlink_cuviddec.h 中找到。

我已在 Ubuntu 18.04LTS nvidia-docker 镜像中成功配置/编译了 nv-codec-headersn11.1.5.1和 FFmpegn5.1.2以用于 CUDA 11.4(需要附加参数/环境变量:
PKG_CONFIG_PATH="<path_to_ffnvcodec.pc_folder>"--nvccflags="-gencode arch=compute_52,code=sm_52 -O2"

答案4

https://github.com/FFmpeg/FFmpeg/commit/27cbbbb33f259de7c795d2b75edf7b240f0f82e6

我发现此提交代码发生错误。使用以前的提交代码

git 克隆https://github.com/FFmpeg/FFmpeg.git

git 签出 7414d0bda7763f9bd69c26c068e482ab297c1c96

git reset --hard

相关内容