c++ - 带有 FFMpeg 的 OpenCV 2.4.7 支持使用 VS 2010 (x86) 构建

标签 c++ opencv video ffmpeg

我与新版本的 OpenCV 2.4.7 战斗了将近一个星期(之前使用的是 2.4.2)。我使用新设置的动机是我在使用 Videowriter 处理未压缩的灰度视频 (http://answers.opencv.org/question/3603/videowriter-videocapture-and-uncompressed-avi/) 时遇到了问题。在 https://github.com/Itseez/opencv/pull/1516 “akarsakov”建议在没有 vfw 支持的情况下构建 OpenCV,并通过 ffmpeg 打开未压缩的视频。这就是我试图做的。我基本上遵循了该视频中提到的说明:http://docs.opencv.org/trunk/doc/tutorials/introduction/windows_install/windows_install.html

我已经使用 Qt 5.1.1 ( http://answers.opencv.org/question/24184/how-to-compile-opencv-247-with-qt-and-ffmpeg/ ) 成功构建了 opencv。但我无法让 VideoWriter 和 VideoCapture 为我工作。所以我做了什么:

  1. 我从 http://ffmpeg.zeranoe.com/builds/ 下载了最新的 ffmpeg 版本

  2. 我生成了禁用 VfW 并启用 ffmpeg 的 vs2010 项目:

    Video I/O:
    
    Video for Windows:           NO
    DC1394 1.x:                  NO
    DC1394 2.x:                  NO
    FFMPEG:                      YES (prebuilt binaries)
      codec:                     YES (ver 55.18.102)
      format:                    YES (ver 55.12.100)
      util:                      YES (ver 52.38.100)
      swscale:                   YES (ver 2.3.100)
      gentoo-style:              YES
      OpenNI:                    NO
    OpenNI PrimeSensor Modules:  NO
    PvAPI:                       NO
    GigEVisionSDK:               NO
    DirectShow:                  YES
    Media Foundation:            NO
    XIMEA:                       NO
    
  3. 我将 ffmpeg 的包含目录和库添加到 highgui 模块。

我无法在没有任何错误的情况下编译 OpenCV,但我所看到的行为并不是我所期望的:

  1. 在没有 VfW 的情况下构建 OpenCV 2.4.7 -> VideoWriter.open () 始终返回 false!
  2. 使用 VfW 构建 OpenCV 2.4.7 -> VideoWriter.open () 此时返回 true,在同一对象上调用 release() 和 open() 始终返回 false。
  3. 使用或不使用 ffmpeg -> An VideoCapture.open () 会给出一条错误消息,要求提供 libiconv-2dll!

是否有人遇到了同样的问题并且能够指出我的错误?

提前致谢。 干杯

最佳答案

OpenCV 2.4.7 需要更新版本的 FFmpeg 才能工作,但这似乎不是问题,因为您已经涵盖了这一点。

问题的原因可能是 bug #2281: VideoCapture::read fails on uncompressed video .

作为中间解决方案,我建议您降级到 OpenCV 2.4.5。

关于c++ - 带有 FFMpeg 的 OpenCV 2.4.7 支持使用 VS 2010 (x86) 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143022/

相关文章:

java - 在 java swing 中播放 avi 视频文件

c++ - 尝试用 C++ 编写我自己的链表实现,遇到列表中的 3 个元素后出现代码段错误

c++ - 类型推导/替换失败

c++ - C++ 中的 Fgets 重复最后一行

c++ - 这个 OpenCV 矩阵表达式的含义是什么?

java - 使用Java播放和剪切视频

c++ - gtest - 使用 EXPECT_EQ 报告循环的索引变量

java.lang.UnsatisfiedLinkError : Native method not found 错误

python - 如何使用opencv拼接多张图像?

ios - 从 iPhone 6/6+ 上的相机胶卷视频导出时没有慢动作效果