C++ 使用RTSP协议传输MJPEG视频时出错
我想用OpenCV和Gstreamer从我的以太网摄像机流式传输MJPEG视频。 我已尝试使用以下gstreamer管道打开流: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 !
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手册涵盖了这个主题?