ffmpeg - 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'
任何指针表示赞赏。
解决方案
推荐阅读
- swift - 数据库不存在 - 使用 Vapor 3 和 Fluent 的服务器端 Swift 中的 PostgreSQL
- python - 如何从 Oracle DB 中以 MDSYS 格式读取几何数据并转换为 shapely 格式或 GeoJson?
- matlab - 当我使用 X 和 Y 的历史数据对变量“Y”进行一些可用预测时,如何为变量“X”选择正确的预测方法?
- sql - 如何连接两个具有相同主键值的行数不等的表
- django - Django admin:更改日期和日期时间格式
- google-apps-script - 将数据从 Bigquery 加载到 Datastudio - 错误
- node.js - Node.js http-server 2 个文件夹
- ssl - 使用 https 的 GET 请求不如 Post 请求安全
- c# - C#脚本上的UDP服务器统一启动但无法接收数据包
- java - 使用 JButton 在 JPanel 之间切换?