1

所以情况如下

我每秒接收 20/30 的未压缩图像。格式是 PNG 或位图。每张照片的大小在 40 到 50 mb 之间(自未压缩以来都具有相同的大小)。

我想将它们编码为 265 无损视频并使用 FFMPEG 将它们流式传输到 http 服务器。输出视频是 1920x1080,所以有一些下采样。允许压缩,但除了下采样外,不允许丢失任何内容。

现在我仍处于测试阶段。我有一个 500 个样本图像。我试图尽可能有效地对它们进行编码。我正在使用以下命令:

ffmpeg -hwaccel cuvid -f image2 -i "0(%01d).png" -framerate 30 -pix_fmt p010le -c:v hevc_nvenc -preset lossless -rc vbr_hq -b:v 6M -maxrate:v 10M -vf scale=1920 :1080 -c:a aac -b:a 240k 结果.mp4

我有一个强大的现代 quadro GPU 和一个 6 核英特尔 CPU 和一个 Nvme 硬盘。

编码时GPU的使用率正好是10%,CPU大约是30-40%

如何将 GPU 使用率提高到 80%?我要运行代码的机器将至少有一个 quadro 4000(可能更强大),我想充分利用它

4

2 回答 2

2

如果你ffmpeg是用它编译的,--enable-libnpp那么考虑使用基于 GPU 的scale_npp过滤器,而不是仅使用 CPU 的 scale。FFmpeg Wiki中的示例:硬件加速

ffmpeg -hwaccel cuda -i input -vf scale_npp=1920:1080 -c:v h265_nvenc output.mp4

您可能会看到性能或 GPU 利用率有所提高。

于 2020-08-06T17:30:05.377 回答
1

这不是它的工作原理。GPU 不使用标准矢量处理单元进行视频编码。(嗯,它对颜色转换和缩放等事情有一点作用,但并非对所有事情都适用)。GPU 具有用于视频编码原语的专用电路。当这些已满时,无论您拥有多少 GPU 内核,它们都将处于空闲状态。

因此,要使用“更多”GPU,您不会获得强大的 GPU,而是购买具有更多 NVENC 内核的卡。

于 2020-08-06T17:24:57.787 回答