Docker容器中ffmpeg调用GPU硬编码
在容器中使用 GPU 加速来处理视频流或其他相关任务,并且宿主机已经配置了 GPU 驱动,通常需要将宿主机的 NVIDIA 相关库文件(如 libnvcuvid.so 和 libnvidia-encode.so)复制到容器中,以便容器能够正确识别并使用这些库。
操作步骤:
-
确认宿主机上存在相关库
在宿主机上,找到
libnvcuvid.so和libnvidia-encode.so库文件的位置。通常这些库文件位于/usr/lib/x86_64-linux-gnu/或/usr/local/cuda/lib64/目录下。例如:
find /usr -name 'libnvcuvid.so*' find /usr -name 'libnvidia-encode.so*' -
将库文件复制到容器中
然后将库文件复制到容器的
/lib目录下:docker cp /path/to/libnvcuvid.so.* <container_id>:/lib/ docker cp /path/to/libnvidia-encode.so.* <container_id>:/lib/ -
在容器内创建软连接
进入容器的 shell:
docker exec -it <container_id> /bin/bash在容器内的
/lib目录下创建软连接:ln -s /lib/libnvcuvid.so.<version> /lib/libnvcuvid.so.1 ln -s /lib/libnvidia-encode.so.<version> /lib/libnvidia-encode.so.1 # docker cp /usr/lib/x86_64-linux-gnu/libnvcuvid.so.550.127.08 docker-api-1:/app/lib # docker cp /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.550.127.08 docker-api-1:/app/lib这里
<version>是实际的库文件版本号,例如libnvcuvid.so.1.0.0或类似的文件名。 -
确保容器支持 GPU 加速
如果你还没有在容器中启用 GPU 支持,确保使用了 NVIDIA 提供的 Docker 运行时。你需要在运行容器时指定
--gpus all或其他适当的选项来启用 GPU。例如:docker run --gpus all -d <image_name>
注意:
消费级显卡对于视频编解码有并发限制。

2721

被折叠的 条评论
为什么被折叠?



