ffmpeg - 使用 directshow 输入和 JPEG 图像序列输出为 FFmpeg 启用 QSV

标签 ffmpeg directshow ffdshow

我正在使用带有 Directshow 输入的 FFmpeg。输出是一系列单个 JPEG 图像。 FFmpeg 本身将流映射到 mjpeg 并使用 image2 作为输出。

是否可以通过为此过程使用 Intel QuickSync Video (QSV) 硬件加速来提高性能? FFmpeg QuickSync Wiki实际上列出了自 Braswell 以来的 JPEG 编码。

这是我到目前为止所尝试的:

ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -f dshow -video_size 3840x2160 -framerate 25 -i "video=My Webcam" -vf hwupload=extra_hw_frames=64,format=qsv -vcodec mjpeg_qsv "C:\out\%d.jpg"

该命令有效,生成图像 - 但 GPU 负载似乎与没有任何 qsv 选项时相同..?

谢谢!

最佳答案

我将它与 h264 编码的视频进行了比较。首先使用 QSV jpeg 编码器:

ffmpeg -c:v h264_qsv -i myvideo.mkv -vcodec mjpeg_qsv images/%06d.jpg
之后没有mjpeg_qsv:
ffmpeg -c:v h264_qsv -i myvideo.mkv images/%06d.jpg
该示例是简约的,可以通过多种方式进行改进。在图片中您可以看到 GPU 的负载。在带有 mjpeg_qsv 的红色框中和没有 mjpeg_qsv 的蓝色框中。 mjpeg_qsv 的执行时间也更好,速度=3.34x 与速度=1.84x .由于您使用网络摄像头作为源,因此您的管道受到实时视频帧速率的限制。因此,您的硬件每秒只能处理 25 帧 ( -framerate 25 )。根据分辨率和您的硬件,这对您的 GPU 来说可能是一件容易的事,在这两种情况下。此外,请确保您寻找的是英特尔 GPU,而不是您的 Nvidia/AMD GPU。如果您仍然觉得看不到性能提升,请让我们知道您的两个命令以进行比较。
enter image description here

关于ffmpeg - 使用 directshow 输入和 JPEG 图像序列输出为 FFmpeg 启用 QSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60621990/

相关文章:

c++ - 将 FFDShow 编码为 DirectShow 图形以进行去隔行扫描?

ffmpeg - 如何在ffmpeg中同时在视频上添加字幕和水印?

audio - 在哪里可以找到各种格式的示例音频文件?

windows - FFMPEG(windows7)无法让输出视频显示超过 10 个 jpg 中的 3 个

windows-10 - 在 Windows 10 上编辑图形

ffmpeg DirectShow 捕获 2 个引脚

c# - 使用 DirectShow 从内存渲染

video - 通过降低质量来提高 ffmpeg CPU 使用率

python - 为 ffdshow 制作一个 python gui

ffmpeg - 抽屉盒 : error when evaluating the expression 'max'