Ich versuche, ein Video von einer Raspberry Pi-Kamera über ein lokales Netzwerk auf meinen PC zu streamen.capture stream von raspberrry pi mit gstreamer in opencv
Auf der Raspberry Pi Seite, verwende ich gstreamer mit dem folgenden Befehl:
raspivid -n -t 0 -rot 270 -w 960 -h 720 -fps 30 -b 6000000 -o - | gst-launch-1.0 -e -vvvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 ! udpsink host=192.168.1.85 port=5000
Und ich benutze den folgenden Befehl auf der PC-Seite:
gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false
In diesem Fall wird das Video angezeigt und alles funktioniert gut. Allerdings möchte ich den Stream mit OpenCV in einem C++ - Programm erfassen. Ich versuche dies mit OpenCV 3.2 zu tun, das mit gstreamer-1.0 32bit kompiliert wurde.
Wenn ich den folgenden Code ausführen, um zu versuchen, den Strom zu erfassen:
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[])
{
cv::VideoCapture cap("udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! appsink");
return 0;
}
ich die folgende Fehlermeldung erhalten:
GStreamer Plugin: Embedded video playback halted; module udpsrc0 reported: Internal data stream error.
OpenCV Error: Unspecified error (GStreamer: unable to start pipeline) in cvCaptureFromCAM_GStreamer, file:\opencv\modules\videoio\src\cap_gstreamer.cpp, line 832
konnte ich andere Ströme OpenCV erhalten, aber ich kann Lass es nicht mit gstreamer arbeiten. Ich suchte nach diesem Problem, aber ich kann nichts hilfreiches finden, also würde ich etwas Hilfe schätzen.
Ich denke, udpsrc könnte Kappen muß den Codierungstyp definieren. Wie 'application/x-rtp, Encoding-name = H264, Nutzlast = 96' statt' application/x-rtp, Nutzlast = 96'. –
Dank für Sie kommentieren, aber das Hinzufügen Kappen schien nicht Materie. – Wopke