gpt4 book ai didi

opencv - 如何在 Windows 中使用 openCV FFMPEG 视频 I/O 而不是 DirectShow ?

转载 作者:行者123 更新时间:2023-12-02 16:13:05 24 4
gpt4 key购买 nike

因此,我正在尝试使用 openCV videoWriter 编写视频,如下所示:

writer=cv.CreateVideoWriter(path+"test_output.avi",-1,fps,(W,H),1)

因此,我没有提供 FOURCC,而是提供了 -1 以查看我有哪些可用的编解码器。
结果是 Microsoft RLE、Microsoft Video 1、Intel YUV 和未压缩。

原因是在使用 CMAKE for Visual Studio 10 x64 配置 openCV 时,这就是我在视频 i/o 中的内容:
视频输入/输出:DirectShow

有没有办法把它切换到 FFMPEG?我知道 ffmpeg dll 存在于\3dparty\ffmpeg 中。
我寻找 Cmake FFMPEG 标志,但没有找到任何标志。奇怪的是在视频部分下 opencv 根目录下的 CmakeLists.txt 中:
if(UNIX AND NOT APPLE)
<FFMPEG stuff>
elseif(WIN32)
status(" Video I/O:" HAVE_VIDEOINPUT THEN DirectShow ELSE NO)
endif()

所以在我看来,opencv 自动切换到 DirectShow 并且没有选择使用 FFMpeg。
或者更确切地说,可以升级Driectshow 以支持其他格式,如Divx 或h264?
有任何想法吗?

最佳答案

您正在寻找的答案就在这里,它适用于 32 位和 64 位配置。我使用了这个 FFMPEG 版本。 http://ffmpeg.zeranoe.com/builds/win64/dev/ffmpeg-git-1aeb88b-win64-dev.7z

1) 下载 OpenCV 2.3

2) 打开根 CMakeLists.txt 并插入行 set(HAVE_FFMPEG 1)

3) 下载http://ffmpeg.zeranoe.com/builds/win64/dev/ffmpeg-git-1aeb88b-win64-dev.7z (或 32 位版本,如果你喜欢的话)

4)使用#define INT64_C编辑在ffmpeg包含目录中找到的avformat.h

5) 使用 #define snprintf _snprintf 编辑 highgui 项目中的 cap_ffmpeg_impl.hpp

6) 在 C/C++>Additional Include Directories 下的 highgui 项目属性中添加刚刚下载的 FFMPEG 的包含目录的路径

7)在Linker>General>Additional Library Dependencies下的同一个属性页上,添加刚刚下载的FFMPEG的lib目录的路径

8)在链接器>输入>附加依赖项下的同一属性页面上,添加在lib中找到的所有ffmpeg库的名称(avformat.lib,avscale.lib,avcore.lib等)

9)构建highgui项目

10) 将 FFMPEG 自带的 .dll 文件的路径添加到 System Path 环境变量中。

而已! 10 个简单的步骤;)

关于opencv - 如何在 Windows 中使用 openCV FFMPEG 视频 I/O 而不是 DirectShow ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9387392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com