【问题标题】:OpenCV VideoWriter Automatic Codec selectionOpenCV VideoWriter 自动编解码器选择
【发布时间】:2015-01-14 17:18:53
【问题描述】:

我遇到了很多其他人在使用 openCV 时遇到的同样问题,因为当我使用以下代码时,openCV 无法写入视频文件。我使用的是 openCV 2.4.10 和 python 2.7

out = cv2.VideoWriter('C:\motion\output.avi',cv2.cv.CV_FOURCC('X','V','I','D'), 20, (640,480),True)

一个可行的解决方法是将第二个参数替换为 -1,这会在程序运行时提供一个带有编码选项的弹出窗口。选择其中一个时,将创建视频。

问题是,我将它添加到运动检测软件中,该软件每次检测到运动时都会写入一个 15 秒的时间戳文件,显然手动选择编解码器不适用于此方案。

有没有办法让 openCV 使用 VideoWriter 或其他方法来选择其中一个编解码器?

我已经尝试过的事情: 将 opencv_ffmpeg.dll 复制到 python 文件夹并从 FOURCC 中选择 FMP4 编解码器

【问题讨论】:

  • 请注意,弹出窗口是 vfw 功能,仅适用于 windows。

标签: python opencv


【解决方案1】:

虽然我没有找到选择可用编解码器的替代方法,但我确实找到了 openCV 没有找到自己的编解码器的根本问题的答案(这很好,因为 Windows 编解码器生成的文件比生成的文件大约 50 倍由 fmp4 编解码器)。

访问编解码器,将文件从 opencv\sources\3rdparty\ffmpeg 文件夹复制到您的 python27 文件夹,然后将名称从 opencv_ffmpeg.dll 更改为 opencv_ffmpegXYZ.dll,其中 XYZ = 您的 openCV 版本。例如,我有 openCV 2.4.10,所以我将其更改为 opencv_ffmpg2410.dll。可以在这个问题上找到更多示例。

OpenCV 2.4 VideoCapture not working on Windows

【讨论】:

  • 框架的大小必须为 640x480 以匹配cv2.VideoWriter() 中指定的尺寸。