Ich versuche, mit Python einen Netzwerk-Video-Stream zu erfassen und anzuzeigen. Der Strom wurde angelegt (auf meinem Laptop) mit dem folgenden Befehl:Capture gstreamer Netzwerk-Video mit Python
gst-launch-1.0 v4l2src ! videorate ! video/x-raw,framerate=2/1,width=640,height=480 ! x264enc pass=qual quantizer=20 tune=zerolatency ! rtph264pay config-interval=10 pt=96 ! udpsink host=127.0.0.1 port=5000
Es nimmt die Webcam Eingang und Ströme sie über einen UDP-Port. Ich kann den Strom erfassen und sie mit folgendem Befehl angezeigt werden:
gst-launch-1.0 udpsrc port=5000 ! "application/x-rtp, payload=127" ! rtph264depay ! avdec_h264 ! xvimagesink sync=false
Jetzt versuche ich, den gleiche (Capture) mit einem Python-Skript zu tun, aber ohne Mangel. Hier ist mein Code:
import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst
udpPipe = Gst.pipeline("player")
source = Gst.ElementFactory.make('udpsrc', None)
source.set_property("port", 5000)
source.set_property("host", "127.0.0.1")
rdepay = Gst.ElementFactory.make('rtph264depay', 'rdepay')
vdecode = Gst.ElementFactory.make('avdec_h264', 'vdecode')
sink = Gst.ElementFactory.make('xvimagesink', None)
udpPipe.add(source, rdepay, vdecode, sink)
gst.element_link_many(source, rdepay, vdecode, sink)
udpPipe.set_state(gst.STATE_PLAYING)
Der Fehler Ich erhalte ist:
/usr/lib/python2.7/dist-packages/gi/overrides/Gst.py:56: Warning: /build/glib2.0-prJhLS/glib2.0-2.48.2/./gobject/gsignal.c:1674: parameter 1 of type '<invalid>' for signal "GstBus::sync_message" is not a value type
Gst.Bin.__init__(self, name=name)
/usr/lib/python2.7/dist-packages/gi/overrides/Gst.py:56: Warning: /build/glib2.0-prJhLS/glib2.0-2.48.2/./gobject/gsignal.c:1674: parameter 1 of type '<invalid>' for signal "GstBus::message" is not a value type
Gst.Bin.__init__(self, name=name)
Traceback (most recent call last):
File "getUdp.py", line 13, in <module>
source = Gst.ElementFactory.make('udpsrc', None)
File "/usr/lib/python2.7/dist-packages/gi/overrides/Gst.py", line 217, in make
return Gst.ElementFactory.make(factory_name, instance_name)
TypeError: unbound method fake_method() must be called with ElementFactory instance as first argument (got str instance instead)
Irgendwelche Ideen?
:-(
ich nur in das gleiche Problem ausgeführt haben. ich sehe, dass Sie benutze Python 2.7 als bin Ich habe Gst in einer Python 3 Umgebung getestet und es hat funktioniert. Jetzt möchte ich es in einer Python 2-Anwendung implementieren und habe diesen Fehler bekommen. Ich bin mir noch nicht sicher, wie das behoben werden kann. Aber ich wollte sowieso die Anwendung auf Python 3 portieren. Aber das wird Zeit brauchen. Wenn es funktioniert und ich diesen Link bis dahin nicht vergessen habe, werde ich Ihnen ein Update geben. – exhuma