2

使用 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、rate、width 或 height

否则nvidia-smi显示这个

在此处输入图像描述

这个gpu使用的是GeForce 1050 Ticuda版本是9.0

4

2 回答 2

4

在 Docker 容器内运行时,默认情况下并非所有 Nvidia 库都安装在容器内。在此处此处阅读更多信息。您可以通过运行以下命令查看 Docker 容器中可用的所有库:ldconfig -p | grep -E 'libcuda|libnvidia'

要解决此问题,您应该修改NVIDIA_DRIVER_CAPABILITIESDocker 映像中的环境变量。例如,您可以附加ENV NVIDIA_DRIVER_CAPABILITIES=all到 Dockerfile 以将所有库/二进制文件挂载到 docker 容器中。

通过这样做,libnvidia-encode库也将被挂载,因此 FFMPEG 将能够使用 NVENC 编解码器。

于 2020-12-06T17:04:05.020 回答
1

如果您使用 nvidia-docker 运行 docker 映像,那么所有内容都应该从主机获取。您应该首先在主机系统上安装 cuda。“sudo apt-get install cuda”,然后运行 ​​docker 镜像。

您还应该使用 nvidia-cuda 映像而不是 linux(在 dockerfile 中)

于 2018-09-11T17:04:47.757 回答