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