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

Enable QSV for FFmpeg with directshow input and JPEG image sequence output

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

是否可以为此进程使用 Intel QuickSync 视频 (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、speed=3.34x 与 speed=1.84x 的执行时间也更好。由于您使用网络摄像头作为来源,因此您的管道受到实时视频帧速率的限制。因此,您的硬件每秒只能处理 25 帧 (-framerate 25)。根据分辨率和您的硬件,在这两种情况下,这对于您的 GPU 来说可能是一项轻松的工作。另外,请确保您寻找的是 Intel GPU 而不是 Nvidia/AMD GPU。如果您仍然觉得看不到性能提升,请让我们知道您的两个命令以进行比较。