Beim Versuch, ffmpeg mit nvenc zu verwenden, ist das Laden der CUDA-Bibliothek fehlgeschlagen

Beim Versuch, ffmpeg mit nvenc zu verwenden, ist das Laden der CUDA-Bibliothek fehlgeschlagen

Unter Ubuntu 14.04 folge ich der Anleitungvon der NVIDIA-Websiteum ffmpeg mit GPU-Kodierung zum Laufen zu bringen.

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

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.

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

Das bedeutet für mich (der ich im letzten Jahrzehnt nicht viel mit C++ oder Linux gemacht habe), dass die gemeinsam genutzte Bibliothek libcuda.so nicht gefunden werden kann.

Bei einer Suche im Dateisystem stelle ich fest, dass libcuda.soes sich an den folgenden Speicherorten befindet:

/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 bei meiner Suche keine weiteren Ergebnisse finden, die bei der Lösung dieses Problems helfen könnten, und deshalb habe ich das Gefühl, dass ich möglicherweise eher auf Linux-Ebene als auf FFMPEG-Ebene etwas falsch mache.

Hat jemand Vorschläge, wie es von hier aus weitergehen soll?

Bearbeiten: Mir ist gerade aufgefallen, dass ldconfig -pzwar angezeigt wird, dass die Bibliothek gefunden werden kann libcuda.so, ich aber trotzdem noch die Fehlermeldung erhalte, 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

Antwort1

NOTIZ:
Sichern Sie zuerst Ihren alten LD_LIBRARY_PATH!
Dieser Befehl platziert den Wert der Umgebungsvariable LD_LIBRARY_PATH in Ihrem Home-Verzeichnis in der Datei „LD_LIBRARY_PATH.old“.
#>$ echo $LD_LIBRARY_PATH >> ~/LD_LIBRARY_PATH.old

MEINE LÖSUNG:
Ich hatte dieses Problem, als ich die NVidia/Cuda-Treiber in Fedora installierte. 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)

verwandte Informationen