我查看了 OpenCV 和 Gstreamer 上的大量线程,根本无法解决我的错误问题。我正在尝试在 OpenCV 中打开 Gstreamer 管道。我已经用 GStreamer 构建了 OpenCV,它在 CMake 步骤中显示“是”,表明 OpenCV 构建成功。从命令行检索流的命令可以正常工作,但是它只显示一个帧并挂在 OpenCV 中。
我的服务器语法:
gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-raw,format=I420,width=640,height=480,framerate=15/1 ! jpegenc ! rtpjpegpay ! udpsink host=<IP Address> port=5000
我在 OpenCV for Client (C++) 中的语法:
Mat frame;
//create video capture from video camera
VideoCapture cap("udpsrc port=5000 ! application/x-rtp,encoding-
name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink ! appsink");
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
for(;;)
{
cap >> frame;
char c = (char)waitKey(1);
//![display]
imshow(window_name, frame);
frame.release();
}
错误:
GStreamer 插件:嵌入式视频播放停止;模块 autovideosink0-actual-sink-xvimage 报告:输出窗口已关闭 OpenCV 错误:icvStartPipeline,文件 /home/dev/Downloads/OpenCV/opencv-3.0.0/modules/videoio/ 中的未指定错误(GStreamer:无法启动管道) src/cap_gstreamer.cpp,第 383 行在抛出 'cv::Exception' what() 实例后终止调用:/home/dev/Downloads/OpenCV/opencv-3.0.0/modules/videoio/src/cap_gstreamer.cpp: 383: 错误: (-2) GStreamer: 无法在函数 icvStartPipeline 中启动管道
请提供任何帮助,我已经完成了至少 20 篇 Stack 帖子,除了在 OpenCV 中启用 Gstreamer 之外,我离开始的时候还差得远。我什至尝试了不同版本的 OpenCV。
谢谢