Ich verwende OpenCV und GStreamer 0.10.Ergreifen Sie den Rahmen von GST-Pipeline zu opencv mit Python
Ich benutze diese Pipeline, um die MPEG ts Pakete über UDP mit einem benutzerdefinierten Socket sockfd
von Python zur Verfügung gestellt und es mit xvimagesink
anzuzeigen, und es funktioniert einwandfrei. commend Linie folgende ist für diese Pipeline:
PIPELINE_DEF = "udpsrc do-timestamp=true name=src blocksize=1316 closefd=false buffer-size=5600 !" \
"mpegtsdemux !" \
"queue !" \
"ffdec_h264 max-threads=0 !" \
"ffmpegcolorspace !" \
"xvimagesink name=video"
Nun möchte ich aus dieser Pipeline einen Rahmen erhalten und es mit OpenCV anzuzeigen. Wie kann ich es tun? Ich weiß viel über Pufferdaten von Appsink. Aber ich weiß immer noch nicht, wie man diese Puffer in jeden Rahmen für OpenCV konvertiert. Danke für die Antwort und jede Hilfe:]
Danke für die Bearbeitung von Tyler, Try:] –
Willkommen bei SO :) Bitte zeigen Sie uns etwas Arbeit mit Appsink - wenn Sie es bereits verwendet haben, ist dies die tatsächliche Lösung - oder funktioniert es nicht richtig für Sie? Ich denke, Sie müssen nur den Datenteil des Puffers extrahieren, der einen Videoframe darstellt, der für OpenCV verarbeitbar sein sollte. Eine andere Sache ist, dass Sie eine wirklich veraltete Version von GStreamer verwenden, die schon seit Jahren von niemandem mehr unterstützt wird - für Diese Aufgabe - da Sie keine spezifischen Treiber verwenden, die 0.10 benötigen - können Sie zu 1.x wechseln - es gibt auch Python-Bindings für diese Version. Viel Glück – nayana
Danke, ich habe versucht, zu gst 1.0 zu wechseln, aber es gibt eine der wichtigsten Eigenschaft namens "sockfd", die ich verwenden muss, um einen benutzerdefinierten Socket für diese Pipeline zu machen. Es funktionierte gut mit gst 0.10. Allerdings, als ich zu gst 1.0 wechselte, und versuchte, "GSocket" anstelle von "sockfd" zu verwenden. Es gezeigt, dass "keine Verbindung mit src" gefällt http://stackoverflow.com/questions/37795191/error-in-pipeline-porting-pygst-program-from-gstreamer-0-10-to-1-0, also ich ging zurück zu gst 0.10. –