2016-05-08 14 views
0

Ich könnte Hilfe beim Bau einer Gstreamer-Pipeline verwenden. Die Absicht ist, Video von einer RaspiCam zu erfassen, dann das Video zu einem anderen RPi zu streamen, Bildverarbeitung (Objektverfolgung) mit OpenCV auf dem sendenden RPi dazwischen zu machen. Aber ich habe Probleme mit der Codierung und ich weiß nicht wirklich viel über Hexe, die ich verwenden sollte.Gstreamer Pipeline-Kappen

Ich habe diese Adding opencv processing to gstreamer application angeschaut und versucht, gst-rpicamsrc zu bekommen, um die Nocken für die Verwendung in der Pipeline zu erfassen. Aber ich kann nicht herausfinden, wie man das Video dekodiert (?), Damit ich es in OpenCV verwenden kann. Es ist in Ordnung mit Videotestsrc, aber rpicamsrc hat offenbar andere Eigenschaften.

"rpicamsrc ! " "h264parse ! " "tee name=cam ! " "video/x-h264, width=640, height=480, format=RGB ! " "omxh264dec ! " "videoconvert ! " "appsink name=sink sync=true ! " ".cam rtph264pay ! " "rtprtxqueue ! " "udpsink host=127.0.0.1 sync=false port=5000"

Ich habe auch mit kürzeren Pipelines experimentiert, aber nur bekam es mit videotestsrc arbeiten.

Ich fürchte, dass die Warteschlange eine unangenehme Verzögerung der Bildverarbeitung hinzufügt, und da ich Objekte verfolgen möchte, ist es möglicherweise nicht gut genug.

Ich habe auch versucht die Videocapture Kappe ("rpicamsrc! Appsink") und Kappe ("v4l2src! Videodecode! Video/x-raw! Appsink) und so weiter .. Und ich habe getan, mein Bestes passen zu verwenden Empfangsseite mit Decodern in der entgegengesetzten Richtung, aber mein Wissen ist einfach zu begrenzt ..

geschätzt würde Alle Empfehlungen von werden

+0

Zunächst müssen Sie keine doppelten Anführungszeichen (") um Elementnamen verwenden. Queue puffert nur Daten, um eine reibungslose Wiedergabe bereitzustellen und übergibt auch die Verarbeitung der folgenden Elemente an verschiedene Threads - es ist sehr nützlich, normalerweise hinzufügen Warteschlangen überall helfen nur Sachen (aber nehmen Sie mich nicht wörtlich) können Sie nur localy mit rpicamsrc spielen?außerdem muss ich euch warnen, dass das tee ein sehr gefährliches element mit h264 stuff ist (vor allem [x264enc] (http://gstreamer-devel.966125.n4.nabble.com/Pipeline-Freezes-When-Adding-In-Tee-With- x264enc-td4301890.html)) also versuche es zuerst ohne es – nayana

+0

kannst du das versuchen (oder ähnlich - mit einer anderen Senke) 'GST_DEBUG = 3 gst-launch-1.0 rpicamsrc name = src Vorschau = 0 Vollbild = 0! h264parse! omxh264dec! glimagesink sync = 0'? – nayana

Antwort

0

nach der Dokumentation für Videocapture:

  • der ‚Dateiname‘ Parameter ist nicht auf Dateisystempfade beschränkt und kann sein, eine der folgenden: *
      • eine normale Dateisystem-Pfad:
    • z.B. video.avi oder /path/to/video.avi oder C: \ video.avi
      • ein uri:
    • z.B. file: ///path/to/video.avi oder RTSP: ///path/to/stream.asf
      • a gstreamer Pipeline Beschreibung:
    • z.B. Videotextsrc! Videokonvertieren! appsink
    • der appsink Name sollte entweder 'appsink0' sein (Standard) oder 'opencvsink'

Beachten Sie, dass der Name des appsink sein muss oder appsink0 oder opencvsink, während Sie es genannt haben einfach sinken.