【问题标题】:can't build OpenCV + GStreamer correctly (MinGW, Windows)无法正确构建 OpenCV + GStreamer (MinGW, Windows)
【发布时间】:2019-07-10 22:42:55
【问题描述】:

我正在尝试运行测试管道:

 cv::VideoCapture cap = cv::VideoCapture(" autovideosrc ! videoconvert ! appsink0 ", cv::CAP_GSTREAMER);

但它不会启动并返回下一个调试信息(见下文)。我使用mingw32 7.3.0编译了opencv。 Gstreamer 的版本也是 32 位的。有什么问题? win7、mingw 7.3.0、opencv 4.1.0、gstreamer 1.16.0

    0:00:00.040498363  6904   1F44A7C0 WARN      GST_PLUGIN_LOADING gstplugin.c:793:_priv_gst_plugin_load_file_for_registry: module_open failed: 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstdecklink.dll': Не найдена указанная процедура.

        (untitled2.exe:6904): GStreamer-WARNING **: 02:29:33.412: Failed to load plugin 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstdecklink.dll': 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstdecklink.dll': 
The specified procedure was not found.
        0:00:00.061620856  6904   1F44A7C0 WARN      GST_PLUGIN_LOADING gstplugin.c:793:_priv_gst_plugin_load_file_for_registry: module_open failed: 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstopenh264.dll': Не найдена указанная процедура.

        (untitled2.exe:6904): GStreamer-WARNING **: 02:29:33.432: Failed to load plugin 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstopenh264.dll': 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstopenh264.dll': 
The specified procedure was not found.
        0:00:00.072668621  6904   1F44A7C0 WARN      GST_PLUGIN_LOADING gstplugin.c:793:_priv_gst_plugin_load_file_for_registry: module_open failed: 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstsoundtouch.dll': Не найдена указанная процедура.

        (untitled2.exe:6904): GStreamer-WARNING **: 02:29:33.442: Failed to load plugin 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstsoundtouch.dll': 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstsoundtouch.dll': 
The specified procedure was not found.
        0:00:00.088487674  6904   1F44A7C0 WARN      GST_PLUGIN_LOADING gstplugin.c:793:_priv_gst_plugin_load_file_for_registry: module_open failed: 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstsrt.dll': Не найдена указанная процедура.

        (untitled2.exe:6904): GStreamer-WARNING **: 02:29:33.465: Failed to load plugin 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstsrt.dll': 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstsrt.dll': 
The specified procedure was not found.
        0:00:00.089972159  6904   1F44A7C0 WARN      GST_PLUGIN_LOADING gstplugin.c:793:_priv_gst_plugin_load_file_for_registry: module_open failed: 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgsttaglib.dll': Не найдена указанная процедура.

        (untitled2.exe:6904): GStreamer-WARNING **: 02:29:33.465: Failed to load plugin 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgsttaglib.dll': 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgsttaglib.dll': 
The specified procedure was not found.
        0:00:00.097988553  6904   1F44A7C0 WARN      GST_PLUGIN_LOADING gstplugin.c:793:_priv_gst_plugin_load_file_for_registry: module_open failed: 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstwebrtcdsp.dll': Не найдена указанная процедура.

        (untitled2.exe:6904): GStreamer-WARNING **: 02:29:33.475: Failed to load plugin 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstwebrtcdsp.dll': 'E:\gstreamer\1.0\x86\lib\gstreamer-1.0\libgstwebrtcdsp.dll': 
The specified procedure was not found.
        0:00:00.107822720  6904   1F44A7C0 WARN                 filesrc gstfilesrc.c:533:gst_file_src_start:<source> error: No such file "C:\Users\Shmeisser\Documents\build-untitled2-Desktop_Qt_5_9_4_MinGW_32bit-Debug\ autovideosrc ! videoconvert ! appsink0"
        0:00:00.107911655  6904   1F44A7C0 WARN                 basesrc gstbasesrc.c:3469:gst_base_src_start:<source> error: Failed to start
        0:00:00.108341459  6904   1F44A7C0 WARN                 filesrc gstfilesrc.c:533:gst_file_src_start:<source> error: No such file "C:\Users\Shmeisser\Documents\build-untitled2-Desktop_Qt_5_9_4_MinGW_32bit-Debug\ autovideosrc ! videoconvert ! appsink0"
        0:00:00.108391029  6904   1F44A7C0 WARN                 basesrc gstbasesrc.c:3469:gst_base_src_start:<source> error: Failed to start
        0:00:00.108489004  6904   1F44A7C0 WARN                 filesrc gstfilesrc.c:533:gst_file_src_start:<source> error: No such file "C:\Users\Shmeisser\Documents\build-untitled2-Desktop_Qt_5_9_4_MinGW_32bit-Debug\ autovideosrc ! videoconvert ! appsink0"
        0:00:00.108535367  6904   1F44A7C0 WARN                 basesrc gstbasesrc.c:3469:gst_base_src_start:<source> error: Failed to start
        0:00:00.108575898  6904   1F44A7C0 WARN                 basesrc gstbasesrc.c:3824:gst_base_src_activate_push:<source> Failed to start in push mode
        0:00:00.108603015  6904   1F44A7C0 WARN                GST_PADS gstpad.c:1142:gst_pad_set_active:<source:src> Failed to activate pad

【问题讨论】:

  • 您是如何构建/安装 GStreamer 的?在增加构建具有 GStreamer 支持的 OpenCV 并与之集成的复杂性之前,您甚至可以通过命令行中的 gst-launch-1.0.exe 实用程序成功地测试 GStreamer 吗?无论如何,您的错误是抱怨无法加载插件。您是否还构建/安装了各种好/坏/丑插件集?
  • @rob3c 我从官方网站为 mingw32 安装了 gstreamer 和 gstreamer-devel。在安装过程中,我选择了所有软件包,所以我安装了我能安装的所有东西。是的,我无法使用 opencv 运行的所有管道都可以使用 gst-launch-1.0.exe 成功运行
  • 你的路径上有那个 lib 文件夹吗? libstdc++-6.dll 在您的系统上在哪里?如果将它复制到那些失败的库所在的位置会发生什么?如果 dll 或其任何依赖项无法加载,则 dll 将无法加载。在常规窗口中,您可以使用gflags.exe 或等效的注册表设置来调试库加载失败,但我不确定 mingw 下的 gflags 会发生什么。

标签: opencv mingw gstreamer gstreamer-1.0


【解决方案1】:

这很容易,但有很多错误空间。 Gstreamer 管道有效。扩展描述可在此处Tutorial 获得。

我用过3) - OpenCV 源码 opencv-4.2.0 - OpenCV 源码 opencv_contrib-4.2.0 - Cmake 3.17 release Candidate 3,这很重要。 我为 MSVC GStreamer 使用了开发和运行时安装程序 Gstreamer 1.16.2 运行时安装程序 Gstreamer 1.16.2 开发安装程序 以下步骤对于 OpenCV 从源代码和 OpenCV 安装构建是常见的。另外,这些资源需要在cmake配置时添加。

现在在 Visual Studio 2019 中构建由 CMAKE 生成的 OpenCV 项目。最后重要的是设置环境变量以找到 GStreamer Runtime。进入系统变量路径:添加

  • xxx\1.0\x86_64\bin
  • xxx\1.0\x86_64\lib
  • xxx\1.0\x86_64\lib\gstreamer-1.0

【讨论】:

  • 在我的问题中,我写了关于 mingw 的文章。在windows上用msvc构建opencv + gstreamer没有任何问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 2021-03-13
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 2020-03-05
相关资源
最近更新 更多