
在 Ubuntu 14.04 上我遵循說明指南來自 NVIDIA 網站使用 GPU 編碼執行 ffmpeg。
我按照說明進行操作(據我所知),安裝了 NVIDIA SDK 本地 .dep,安裝了套件cuda
和nvidia-352
套件,然後編譯了 ffmpeg。
但是,當我嘗試執行以下調用時:
ffmpeg -i ~/test/StreamInstructions.mp4 -vcodec nvenc -b:v 5M -f avi output.mp4
ffmpeg 告訴我Failed loading CUDA library
。
搜尋Google顯示了此錯誤訊息的源代碼源自代碼行:dl_fn->cuda_lib = dlopen("libcuda.so", RTLD_LAZY);
。
這對我(在過去十年裡沒有做過太多 c++ 或 linux)來說,它找不到 libcuda.so 共享庫。
搜尋檔案系統後,我發現該檔案libcuda.so
位於以下位置:
/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
我在搜尋中找不到任何其他結果來幫助解決這個問題,因此我覺得我可能在 linux 級別而不是 ffmpeg 級別上做錯了一些事情。
有人對從這裡去哪裡有什麼建議嗎?
編輯:
我剛剛注意到,ldconfig -p
實際上表明它可以找到該libcuda.so
庫,但我仍然收到無法找到該庫的錯誤:
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
答案1
筆記:
首先備份您的舊 LD_LIBRARY_PATH!
此指令會將環境變數 LD_LIBRARY_PATH 的值放入您的主目錄中的檔案「LD_LIBRARY_PATH.old」中
#>$ echo $LD_LIBRARY_PATH >> ~/LD_LIBRARY_PATH.old
我的修復:
我在 Fedora 中安裝 NVidia/Cuda 驅動程式時遇到了這個問題。我必須更新我的庫路徑:
#>$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/cuda/lib
恢復更改:
#>$ export LD_LIBRARY_PATH=$(cat ~/LD_LIBRARY_PATH.old)