Fehler beim Laden der CUDA-Bibliothek beim Versuch, ffmpeg mit nvenc zu verwenden


1

Unter Ubuntu 14.04 folge ich der Bedienungsanleitung von der NVIDIA-Website ffmpeg mit GPU-Codierung zum Laufen zu bringen.

Ich habe die Anweisungen befolgt (soweit ich das beurteilen kann), das NVIDIA SDK local .dep installiert und das cuda Paket und die nvidia-352 Paket, dann kompiliert ffmpeg.

Wenn ich jedoch versuche, den folgenden Anruf zu tätigen:

ffmpeg -i ~/test/StreamInstructions.mp4 -vcodec nvenc -b:v 5M -f avi output.mp4

ffmpeg sagt es mir Failed loading CUDA library.

Durchsuchen von Google zeigt mir, dass der Quellcode für diese Fehlermeldung aus der folgenden Codezeile stammt: dl_fn->cuda_lib = dlopen("libcuda.so", RTLD_LAZY);.

Dies sagt mir (wer in den letzten zehn Jahren nicht viel mit C ++ oder Linux gemacht hat), dass es die gemeinsam genutzte Bibliothek libcuda.so nicht finden kann.

Bei einer Suche im Dateisystem sehe ich das libcuda.so befindet sich an folgenden Orten:

/usr/local/cuda-7.5/doc/man/man7/libcuda.so.7
/usr/local/cuda-7.5/targets/x86_64-linux/lib/stubs/libcuda.so
/usr/lib/i386-linux-gnu/libcuda.so.1
/usr/lib/i386-linux-gnu/libcuda.so
/usr/lib/i386-linux-gnu/libcuda.so.352.63
/usr/lib/x86_64-linux-gnu/libcuda.so.1
/usr/lib/x86_64-linux-gnu/libcuda.so.352.63

Ich kann keine anderen Ergebnisse bei meiner Suche finden, um dieses Problem zu beheben. Aus diesem Grund habe ich das Gefühl, dass ich auf der Linux-Ebene etwas falsch mache, anstatt auf der ffmpeg-Ebene.

Hat jemand Vorschläge, wohin man von hier aus gehen soll?

Bearbeiten: Das ist mir gerade aufgefallen ldconfig -p zeigt eigentlich, dass es das finden kann libcuda.so Bibliothek, dennoch erhalte ich die Fehlermeldung, dass die Bibliothek nicht gefunden werden kann:

 ldconfig -p | grep cuda
        libicudata.so.52 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libicudata.so.52
        libcuda.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcuda.so.1
        libcuda.so.1 (libc6) => /usr/lib/i386-linux-gnu/libcuda.so.1
        libcuda.so (libc6) => /usr/lib/i386-linux-gnu/libcuda.so

Antworten:


1

HINWEIS:
Sichern Sie zuerst Ihren alten LD_LIBRARY_PATH!
Dieser Befehl legt den Wert der Umgebungsvariablen LD_LIBRARY_PATH in Ihrem Ausgangsverzeichnis in der Datei "LD_LIBRARY_PATH.old" ab.
#>$ echo $LD_LIBRARY_PATH >> ~/LD_LIBRARY_PATH.old

MEIN FIX:
Ich hatte dieses Problem, als ich die NVidia / Cuda-Treiber in Fedora installiert habe. Ich musste meinen Bibliothekspfad aktualisieren:
#>$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/cuda/lib

ÄNDERUNGEN RÜCKGÄNGIG MACHEN:
#>$ export LD_LIBRARY_PATH=$(cat ~/LD_LIBRARY_PATH.old)


Leider konnte das nicht behoben werden. Allerdings habe ich gemerkt, dass libcuda.so auftaucht, wenn ich es tue ldconfig -p | grep cuda Das macht das Ganze noch verwirrender.
KallDrexx
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.