如何从qt中的视频文件中提取图像?

时间:2014-02-21 07:35:46

标签: qt ffmpeg

我想在qt中从视频文件中提取图像(第一帧)。我使用ffmpeg应用程序来提取框架,它提供了我需要的extact结果,但是ffmpeg是一个单独的应用程序,它会重载进程。所以我想把它作为静态链接。是否有可能建立到ffmpeg的静态链接,是否有任何statick库可用于从视频中提取帧或有没有其他方法从视频中提取帧?我不想使用Qt声子,因为它在物理上打开一个声子对话框,然后进行scrrenshot。我希望提取过程应该在后台进行。

先谢谢

2 个答案:

答案 0 :(得分:4)

您有两种选择:通过ffmpeg API或ffmpeg可执行文件。基本上

可执行方法:快速而肮脏,如果做得不错也不错,但不是很灵活

通过QProcess调用ffmpeg可执行文件,然后从磁盘读取已处理的数据。您需要从自己的参数构造ffmpeg命令行参数;能够捕获结果(失败\成功)和。

API方法:长期,干净但在开始时需要大量工作

  • 获取ffmpeg动态库(avcodec等)
  • 按照有关如何使用ffmpeg API的教程进行操作。 Dranger是最知名的,有一个updated version前方的学习曲线
  • 将其纳入您的Qt应用程序(专业配置,包装您的ffmpeg功能等等。)
  • 构建静态库版本。我把它留在最后因为我可能很烦,特别是如果你在窗户上(希望你不是)

我个人会建议坚持使用可执行的方法,除非你不介意花一周时间学习ffmpeg API

答案 1 :(得分:2)

OpenCV有一个内置的videocapture API,它实际上包含avcodec,更容易使用 - 如果你不想乱用avcodec。

编辑:Data conversion