尝试将 ffmpeg 与 nvenc 结合使用时加载 CUDA 库失败

尝试将 ffmpeg 与 nvenc 结合使用时加载 CUDA 库失败

在 Ubuntu 14.04 上,我按照说明指南进行操作来自 NVIDIA 网站使用 GPU 编码运行 ffmpeg。

我按照说明进行操作(据我所知),安装了 NVIDIA SDK 本地 .dep,安装了包cudanvidia-352包,然后编译了 ffmpeg。

但是,当我尝试进行以下调用时:

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

ffmpeg 告诉我Failed loading CUDA library

通过谷歌搜索,我发现这个错误信息的源代码来源于这行代码: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)

相关内容