
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 cuda
Paket und das nvidia-352
Paket 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.so
es 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 -p
zwar 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)