从视频中提取帧的最快方法

时间:2013-06-23 08:55:39

标签: c# c++ wpf video

有人测试了从视频中提取帧的最快方法吗?

- 的 Aforge

- Emgu CV(OpenCV)

- 的 AVIFILE

- 的的ffmpeg

使用哪种格式的视频和编解码器?

假设我需要捕捉全高清视频文件(1920 x 1080)的随机帧 超过10毫秒......有可能吗?

我试过用Aforge和Avifile库做这件事。 如果您提取帧1,2,3,4,5,...

,则可以

但是如果你想要这样的随机帧1,2,200,40000,......有时需要500毫秒。 (在指针找到流中的位置之前)。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

访问随机帧的关键因素是使用的编解码器,它的时间压缩,寻找I帧的能力,你可以寻找最近的I帧而不是精确到你感兴趣的时间戳。由于时间压缩,你可能需要[通常内部和透明地对你,但这显然增加了处理开销]寻求最近的关键帧,并且它们从那里逐帧前进到请求的位置。

AForge,EmguCV,OpenCV只是直接使用文件的API之上的包装器,因此它们不能最快(它们是底层访问方法+额外开销)。对于给定的格式/编解码器,FFmpeg和Windows API(AVIFile,DirectShow,Media Foundation)可能会更好或更差,具体取决于实现的质量。