Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用RTSP协议传输MJPEG视频时出错_C++_Opencv_Gstreamer - Fatal编程技术网

C++ 使用RTSP协议传输MJPEG视频时出错

C++ 使用RTSP协议传输MJPEG视频时出错,c++,opencv,gstreamer,C++,Opencv,Gstreamer,我想用OpenCV和Gstreamer从我的以太网摄像机流式传输MJPEG视频。 我已尝试使用以下gstreamer管道打开流: std::string pipe( "rtspsrc location=rtsp://192.168.1.219:554/video.pro1 ! application/x-rtp,encoding-name=JPEG,payload=26 ! " "rtpjpegdepay ! jpegdec !

我想用OpenCV和Gstreamer从我的以太网摄像机流式传输MJPEG视频。 我已尝试使用以下gstreamer管道打开流:

std::string pipe( 
                "rtspsrc location=rtsp://192.168.1.219:554/video.pro1 ! application/x-rtp,encoding-name=JPEG,payload=26 ! " 
                "rtpjpegdepay ! jpegdec ! xvimagesink sync=false ! appsink" 
        ); 
cv::VideoCapture cap(pipe, cv::CAP_GSTREAMER);
但前面的代码返回以下错误:

OpenCV Error: Unspecified error (GStreamer: cannot find appsink in manual pipeline 
) in cvCaptureFromCAM_GStreamer, file /home/nvidia/Documents/CameraTests/src/opencv-3.3.0/modules/videoio/src/cap_gstreamer.cpp, line 796 
VIDEOIO(cvCreateCapture_GStreamer (CV_CAP_GSTREAMER_FILE, filename)): raised OpenCV exception: 

/home/nvidia/Documents/CameraTests/src/opencv-3.3.0/modules/videoio/src/cap_gstreamer.cpp:796: error: (-2) GStreamer: cannot find appsink in manual pipeline 
 in function cvCaptureFromCAM_GStreamer 
我设法用H264和H265算法来传输相同的RTSP源代码, MJPEG是唯一不起作用的格式,那么我想这是gstreamer管道的问题


谢谢

您的管道中有两个水槽。那是你想要的吗?只是想知道
appsink
在这里应该完成什么。这也是引发错误的部分。感谢你的回答,我已经尝试删除管道末端的“appsink”,但错误是一样的。mjpg是一种复杂的流格式,可能在opencv VideoCapture的gstreamer中都没有正确实现。一些服务器发送完整的jpg图像,但是MJPG流媒体标准告诉我们不要为每一帧发送完整的头部。例如,VLC Videoplayer无法接收正确的流式MJPG流(但可能流式错误的完整图像JPG)。有一次,我不得不实现一个live555流媒体服务器和客户端,并且在这种格式上遇到了一些困难:)你可以试试VLC和live555测试客户端,看它们中是否有一个,或者两者都可以接收你的流。我不知道opencv-但它抱怨说它找不到
appsink
。可能它想挂接到回调以导入到达那里的数据-您可能想删除
xImage Sink
,但保留
appsink
?或者,如果您希望两者都添加一个
T形三通
。我猜opencv手册涵盖了这个主题?您的管道中有两个水槽。那是你想要的吗?只是想知道
appsink
在这里应该完成什么。这也是引发错误的部分。感谢你的回答,我已经尝试删除管道末端的“appsink”,但错误是一样的。mjpg是一种复杂的流格式,可能在opencv VideoCapture的gstreamer中都没有正确实现。一些服务器发送完整的jpg图像,但是MJPG流媒体标准告诉我们不要为每一帧发送完整的头部。例如,VLC Videoplayer无法接收正确的流式MJPG流(但可能流式错误的完整图像JPG)。有一次,我不得不实现一个live555流媒体服务器和客户端,并且在这种格式上遇到了一些困难:)你可以试试VLC和live555测试客户端,看它们中是否有一个,或者两者都可以接收你的流。我不知道opencv-但它抱怨说它找不到
appsink
。可能它想挂接到回调以导入到达那里的数据-您可能想删除
xImage Sink
,但保留
appsink
?或者,如果您希望两者都添加一个
T形三通
。我猜opencv手册涵盖了这个主题?