如何使用ffmpeg更快地将图像导出到bmp? (fps 25)

时间:2018-07-22 08:51:20

标签: c# c++ performance ffmpeg bmp

我正在使用ffmpeg从fps -r 25参数的mp4视频(视频fps:25)中提取所有帧。

这是我使用的命令:ffmpeg -i input.mp4 -r 25 frame_%%02d.bmp。有用。

在开始提取过程时,ffmpeg具有speed=~4x,并且在200-300帧速度之后减速至~0.3x。但是CPU使用率最高仅为3%,内存也可以。输出元数据:

    Encoder         : Lavf58.12.100
    Stream #0:0(und): Video: bmp, bgr24, 1920x1080, q=2-31, 200 kb/s, 25 fps, 25
 tbn, 25 tbc (default)

问题:如何更快地提取?

我尝试使用此参数,但速度未更改:

  • -threads 4线程数已更改,但速度未更改,
  • -presetveryfastultrafast也没有。

1 个答案:

答案 0 :(得分:1)

回顾一下评论中的答案:您受到磁盘速度的限制。 BMP图像未压缩,这意味着单个1920x1080帧导出的大小约为6MB。在25fps下,这将是150MB / s的数据流。您期望以4倍的速度达到600MB / s。只有最快的SSD才能跟上这一步,甚至在理论上也是如此。

如果图像质量是一个重要因素,我建议改为导出到PNG文件。这样可以提供良好的图像质量,同时仍然可以产生明显较小的文件。否则,仅使用JPG,根据所使用的压缩设置,它们甚至在较小的文件尺寸下也可以产生良好的图像质量。