Visual Studio 使用vcpkg建置应用程序时,建置输出目录中不包含Gstreamer二进制档

5jvtdoz2  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(181)

我正在使用Visual Studio 2022和VCPKG构建一个简单的测试程序,该程序使用gstreamer管道打开一个OpenCV VideoCapture对象,并将其连接到RTSP提要。

#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    auto path = "rtspsrc location=rtsp://username:password@192.168.0.115 ! rtph264depay ! h264parse ! nvh264dec ! videoconvert ! appsink";
    auto cap = new cv::VideoCapture(path, cv::CAP_GSTREAMER);
    std::cout << "Hello World!\n";
}

这是我的vcpkg清单

{
  "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
  "name": "opencvtest",
  "version": "0.0.1",
    "dependencies": [
        {
            "name": "opencv",
            "default-features": true,
            "features": [ "gstreamer" ]
        },
        {
            "name": "gstreamer",
            "default-features": true,
            "features": [ "plugins-good","plugins-base","plugins-ugly","x264" ]
        }
    ]
}

我可以很好地构建程序,但运行时,它会抱怨找不到rtspsrc元素。

[ WARN:0@0.014] global H:\vcpkg\buildtrees\opencv4\src\4.5.5-923325adf5.clean\modules\videoio\src\cap_gstreamer.cpp (1127) cv::GStreamerCapture::open OpenCV | GStreamer warning: Error opening bin: no element "rtspsrc"
[ WARN:0@0.014] global H:\vcpkg\buildtrees\opencv4\src\4.5.5-923325adf5.clean\modules\videoio\src\cap_gstreamer.cpp (862) cv::GStreamerCapture::isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created

这似乎是合理的,因为构建输出目录似乎没有所有看起来必要的gstreamer dll,比如gstrtsp*. dll。
如何让vcpkg将所有必需的gstreamer dll包含到我的构建输出目录中?如何正确地将OpenCV/gstreamer与vcpkg一起使用?

xvw2m8pv

xvw2m8pv1#

默认情况下,gstreamer的vcpkg端口不构建rtsp插件(包含rtspsrc元素)。您需要编辑portfile.cmake
在生产环境中执行此操作需要您创建自己的vcpkg存储库,您可以在其中根据需要调整portfile.cmake以及构建选项。
如果这是你需要做的事情,我可以更详细地描述这一点。
简短版本:将-Dgst-plugins-good:rtsp=enabled添加到gstreamer的portfile.cmake中描述的vcpkg_configure_meson构建步骤中。

相关问题