我正在使用带有 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。如果您仍然觉得看不到性能提升,请让我们知道您的两个命令以进行比较。关于ffmpeg - 使用 directshow 输入和 JPEG 图像序列输出为 FFmpeg 启用 QSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60621990/