我希望在基于官方的
nvidia/cuda
镜像的容器中运行支持 cuvid 硬件加速解码的 ffmpeg。尽管存在所有必需的 cuda 库,但 ffmpeg 无法找到 libnvcuvid.so。
容器内 ldconfig -p | grep libnv
输出如下:libnvrtc.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvrtc.so
libnvrtc-builtins.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvrtc-builtins.so
libnvidia-ptxjitcompiler.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libnvidia-ptxjitcompiler.so.1
libnvidia-opencl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.1
libnvidia-ml.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
libnvidia-fatbinaryloader.so.390.12 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libnvidia-fatbinaryloader.so.390.12
libnvidia-compiler.so.390.12 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libnvidia-compiler.so.390.12
libnvidia-cfg.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libnvidia-cfg.so.1
libnvgraph.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvgraph.so
libnvblas.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvblas.so
libnvToolsExt.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvToolsExt.so
我应该只是从主机上复制libnvcuvid.so
吗?如果底层驱动程序版本更改,它不会出现错误吗?
--enable-cuda
和--enable-cuvid
选项编译了 ffmpeg 吗?至于ldd
,我相信 ffmpeg 库使用了运行时绑定(dynload),所以这些库可能不会显示在ldd
列表中。 - the kamilzavcodec_find_decoder_by_name("h264_cuvid"))
。尽管我只编译了支持--enable-cuvid
的ffmpeg,但是--enable-cuda
是必须的吗?也许我也应该尝试一下... - Islam Sabyrgaliyev