使用 Ffmpeg 构建和使用 OpenCV 作为静态库

Posted

技术标签:

【中文标题】使用 Ffmpeg 构建和使用 OpenCV 作为静态库【英文标题】:Building and using OpenCV as a static library with Ffmpeg 【发布时间】:2016-10-10 08:31:03 【问题描述】:

我正在尝试编写一个 OpenCV 应用程序。我已经从源代码静态构建了 OpenCV,因为我不想要 dll 文件,并且只要我不使用 cv::VideoCapture,我的项目就会编译,在这种情况下,我会收到链接错误 LNK2019 unresolved external symbol。

我认为这是因为 cv::VideoCapture 使用 ffmpeg 处理视频,由于它的许可证,它不能在我的项目中静态链接。我可以动态链接ffmpeg,但我在这样做时遇到了麻烦。 %OpenCV_DIR%\bin 文件夹中有一个 opencv_ffmpeg310_64.dll 文件,但我不知道如何将它动态链接到我的项目。通常我有.dll 附带的.lib 文件,但我无法在任何地方找到它们。

是否可以静态链接OpenCV和动态链接ffmpeg,我该怎么做呢?

附加信息:

Windows 10 Visual Studio 2015 OpenCV 3.1.0 x64 构建

【问题讨论】:

动态构建ffmpeg,构建opencv并与刚刚构建的ffmpeg链接? 这个问题可能对你有帮助github.com/opencv/opencv/issues/5920 @stijn 我该怎么做呢? 如果我知道我会创建一个完整的答案:] 构建 ffmpeg 已记录在案,所以应该很容易,让 opencv 与您自己的 ffmpeg 链接可能需要一些 cmake 向导或手动编辑 VS 项目文件 【参考方案1】:

我终于让它工作了。我错误地认为我需要 ffmpeg 才能让它工作。通过在 Visual Studio 的库依赖项中添加 vfw32.lib 解决了我遇到的问题。

【讨论】:

以上是关于使用 Ffmpeg 构建和使用 OpenCV 作为静态库的主要内容,如果未能解决你的问题,请参考以下文章

为 Visual Studio 开发构建 FFMPEG

使用 opencv 和 ffmpeg 制作视频。如何找到正确的颜色格式?

使用python将opencv图像通过管道传输到ffmpeg

Cent OS安装使用ffmpeg(关键点整理)

使用 OpenCV 和 ffmpeg 编写 MP4 文件

OpenCV 编码为 H264