【发布时间】:2011-09-16 17:38:10
【问题描述】:
我正在寻找一种快速加载视频文件并以特定时间间隔(每秒、每分钟、每小时等)从中创建图像的方法。
我尝试使用 DirectShow,但运行速度太慢,我无法启动视频文件并移动到某个位置以获取数据并将其保存到图像中。即使我禁用了参考时钟。尝试过 OpenCV,但除非我知道确切的编解码器信息,否则它无法打开 AVI 文件。因此,如果我知道一种从 OpenCV 中获取编解码器信息的方法,我可能会再试一次。我尝试使用 FFMPEG,但对它的控制并不如我所愿。
任何建议将不胜感激。这是在 Windows 机器上开发的,因为它必须托管在 Windows 机器上。
【问题讨论】:
-
什么文件格式和什么编解码器?如果是 WMV,可以使用 Windows Media Format SDK。
-
大部分视频都是使用 MPEG-4 格式的 AVI。虽然我们确实有一些 FLV 文件。
-
AVI 只是位图的集合。您可以在播放期间截屏和 bitblt,或者找到可以为您提取帧的库。
-
OpenCV 本身使用 DirectShow 或 FFMPEG 来读取视频,因此与它们相比它不会给您任何加速。
-
@AJG85 - 不完全正确。传统上,AVI 是没有压缩 (bmps) 的文件。但文件格式可扩展以托管来自流编解码器的视频。在 Seb 的例子中,他有 MPEG 视频的 AVI 文件。
标签: c++ visual-studio opencv ffmpeg directshow