FEHLER: cuvid angefordert, aber nicht alle Abhängigkeiten sind erfüllt: cuda/ffnvcodec

FEHLER: cuvid angefordert, aber nicht alle Abhängigkeiten sind erfüllt: cuda/ffnvcodec

Ich versuche, FFMPEG mit Nvidia Cuda-Unterstützung unter Debian 9.3 zu kompilieren. Von mir verwendete Parameter:

--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 mit Treibern ist installiert. Wenn ich versuche, ffmpeg zu konfigurieren, heißt es:

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

Neuere ffmpeg-Versionen zeigen eine ähnliche, umformulierte Meldung:

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

Ich weiß absolut nicht, warum ich dieses Problem habe, da ich ffmpegauf allen unseren Transcodierungsservern kompiliere.

Antwort1

Die NVIDIA-Header wurden aus der FFmpeg-Codebasis in eineeigenständiges Repositoryim Commit27cbbbbb. Aus der Commit-Nachricht:

Externe Header sind in der ffmpeg-Codebasis nicht mehr erwünscht, da sie den Wartungsaufwand erhöhen. Im Fall von NVidia müssen die Vanilla-Header jedoch modifiziert werden, um in ffmpeg verwendet werden zu können. Daher stellen wir sie weiterhin zur Verfügung, allerdings in einem separaten Repository.

Auch vonFFmpeg Wiki: HWAccelIntro:

FFmpeg verwendet jetzt einen eigenen, leicht modifizierten Runtime-Loader für die CUDA/nvenc/nvdec-bezogenen Bibliotheken von Nvidia. Wenn Sie von configure eine Fehlermeldung über fehlenden ffnvcodec erhalten,Dasist, was Sie brauchen.

Es funktioniert Makefilemit einem Installationsziel:

make install PREFIX=/usr

FFmpeg sucht nach seiner pkg-configDatei mit dem Namen ffnvcodec.pc. Stellen Sie sicher, dass sie sich in Ihrem befindet PKG_CONFIG_PATH.

So kompilieren Sie die FFmpeg NVIDIA-Header („ffnvcodec“):

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

Kompilieren Sie nun ffmpegwie gewohnt. Die Header sollten automatisch erkannt werden. Wenn nicht, deklarieren Sie den PKG_CONFIG_PATHVerweis auf den Pfad, in dem ffnvcodec.pcsich FFmpeg befindet, wenn Sie es ausführen configure. Beispiel:

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

Antwort2

Ich habe einen ähnlichen Fehler festgestellt, aber es stellte sich heraus, dass er durch eine fehlende Tool-Paketkonfiguration verursacht wurde. Unter Ubuntu 16.04 können Sie Folgendes ausführen:

apt-get install pkgconf

und prüfen Sie, ob das fehlende Paket wirklich fehlt oder nicht:

pkgconf --list-all | grep package-name

Antwort3

Dies kann aufgrund einer Versionsinkongruenz zwischen nv-codec-headers und FFmpeg auftreten. Ursache: Ich habe bestimmte Anweisungen befolgt, die nv-codec-headers auf n8.2.15.8 fixierten, FFmpeg jedoch auf Master beließen.

Ab Tag n4.4 erfordert FFmpeg die CUVIDAV1PICPARAMSStruktur. Diese ist nur in dynlink_cuviddec.h von nv-codec-headers ab Tag n11.0.10.0 zu finden.

n11.1.5.1Ich habe erfolgreich mit nv-codec-headers und FFmpeg für CUDA 11.4 in einem Ubuntu 18.04LTS nvidia-docker-Image konfiguriert/kompiliert n5.1.2(zusätzliche Argumente/Umgebungsvariablen erforderlich:
PKG_CONFIG_PATH="<path_to_ffnvcodec.pc_folder>"und --nvccflags="-gencode arch=compute_52,code=sm_52 -O2")

Antwort4

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

Ich habe festgestellt, dass dieser Commit-Code einen Fehler verursacht. Verwenden Sie den vorherigen Commit-Code

Git-Klonhttps://github.com/FFmpeg/FFmpeg.git

git Auschecken 7414d0bda7763f9bd69c26c068e482ab297c1c96

git reset --hard

verwandte Informationen