在nvidia docker中使用nvenc运行ffmpeg

时间:2018-08-28 16:51:42

标签: docker ffmpeg nvidia nvidia-docker nvenc

我使用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 显示此内容

enter image description here

使用的此GPU是 GeForce 1050 Ti ,而 cuda版本是9.0

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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