我使用nvidia-docker 在 docker容器中安装了 Nvidia Video Codec SDK 8.2 + ffmpeg ,但是当我运行
ffmpeg -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt yuv420p -i HeavyHand_1080p.yuv -c:v h264_nvenc -preset slow -cq 10 -bf 2 -g 150 output.mp4
我遇到了这个错误
无法加载libnvidia-encode.so.1
nvenc所需的最低Nvidia驱动程序为390.25或更高版本 初始化输出流时出错0:0-打开编码器时出错 对于输出流#0:0-可能是不正确的参数,例如bit_rate, 速率,宽度或高度
否则, nvidia-smi 显示此内容
使用的此GPU是 GeForce 1050 Ti ,而 cuda版本是9.0
答案 0 :(得分:1)
如果您使用nvidia-docker运行docker映像,则所有内容都应从主机上获取。 您应该先在主机系统上安装cuda。 “ sudo apt-get install cuda”,然后运行docker映像。
您还应该使用nvidia-cuda映像而不是linux(在dockerfile中)
答案 1 :(得分:1)
在Docker容器中运行时,默认情况下并非所有Nvidia库都安装在该容器中。阅读更多here和here。
您可以通过运行以下命令查看Docker容器中所有可用的库:ldconfig -p | grep -E 'libcuda|libnvidia'
要解决此问题,您应该在Docker映像中修改NVIDIA_DRIVER_CAPABILITIES
环境变量。例如,您可以将ENV NVIDIA_DRIVER_CAPABILITIES=all
附加到Dockerfile上,以将所有库/二进制文件挂载到Docker容器中。
这样做,libnvidia-encode
库也将被挂载,因此FFMPEG将能够使用NVENC编解码器。