
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 ffmpeg
auf 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
Makefile
mit einem Installationsziel:make install PREFIX=/usr
FFmpeg sucht nach seiner
pkg-config
Datei mit dem Namenffnvcodec.pc
. Stellen Sie sicher, dass sie sich in Ihrem befindetPKG_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 ffmpeg
wie gewohnt. Die Header sollten automatisch erkannt werden. Wenn nicht, deklarieren Sie den PKG_CONFIG_PATH
Verweis auf den Pfad, in dem ffnvcodec.pc
sich 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 CUVIDAV1PICPARAMS
Struktur. Diese ist nur in dynlink_cuviddec.h von nv-codec-headers ab Tag n11.0.10.0 zu finden.
n11.1.5.1
Ich 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