首页 > 解决方案 > ffmpeg:nvidia gpu 性能次优

问题描述

问题似乎相当基本:我想在最短的时间内从传入的视频创建缩略图,我试图通过将处理卸载到 nvidia gpu 来做到这一点。

当我运行 ffmpeg 时,我正在使用 nvidia-smi 实用程序监控 gpu 的使用情况。gpu 使用率永远不会超过 15%,使用gpu 编码缩略图的时间仅比使用 gpu所需的时间少 10% 。这些性能水平非常令人失望。

我的问题:我是否以错误的方式处理这个问题(如果是这样,我应该如何处理),还是这个 gpu 性能“正常”/“合理”?

系统信息

该机器是运行 Windows 10、8gb 内存、intel i7-7700 的台式电脑。gpu 是安装了 cuda 11.4 的 nvidia quadro pro 4000。ffmpeg 是在 mingw 下运行的版本 N-101372-gb5cb8c8767-g2fc309e699+4 (2021),带有--enable-cuda --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-libnpp --enable-nvdec--enable-nvenc.

我使用的典型 ffmpeg 命令行是:

 1 ffmpeg -hide_banner \
 2     -init_hw_device cuda=cuda:0 -filter_hw_device cuda \
 3     -hwaccel_output_format cuda \
 4     -i "$infile" \
 5     -vf "hwupload_cuda,scale_npp=w=200:h=150:format=yuv420p:interp_algo=lanczos,fps=1/1,hwdownload,format=yuv420p" \
 6     -y "$outdir/%08d.png"

根据我在 stackoverflow 和nvidia transcoding guide上阅读的帖子,我通过补充一些与 cuda 相关的参数来改变上述内容,但未能提高性能。-hwaccel cuda, -hwaccel cuvid, -hwaccel nvenc在第 3 行的开头 添加任何一个都会导致错误:Impossible to convert between the formats supported by the filter 'graph 0 input from stream 0:0' and the filter 'auto_scaler_0'

任何指针表示赞赏。

标签: ffmpeggpunvidia

解决方案


推荐阅读