blob: 58e676ad99be4126b18f65314949c411d7eeba35 (
plain)
- #!/usr/bin/python3
- # Example for the startup-problem
- #
- # The Pipeline will start but the test-image will be still, as long as no
- # ShmSink at /tmp/grabber-v is present (run ../test-grabber-src.sh in another shell)
- #
- # Even though the ShmSrc is not linked to anything and logically not required for
- # the videotestsrc or the ximagesink, the whole pipeline won't startup when this element
- # fails to start.
- #
- # once the pipeline is running, it does not matter what happens to the ShmSink on the
- # other end, because the TestBin filters all EOS and ERROR Messages coming from the ShmSrc,
- # but somehow this is not enough to make the pipeline start in an error-condition..
- #
- import gi, time
- # import GStreamer and GTK-Helper classes
- gi.require_version('Gst', '1.0')
- from gi.repository import GLib, Gst, GObject
- # init GObject before importing local classes
- GObject.threads_init()
- Gst.init(None)
- from testbin import TestBin
- class Example:
- def __init__(self):
- self.mainloop = GObject.MainLoop()
- self.pipeline = Gst.Pipeline()
- self.src = Gst.ElementFactory.make('videotestsrc', None)
- self.sink = Gst.ElementFactory.make('ximagesink', None)
- self.testbin = TestBin()
- # Add elements to pipeline
- self.pipeline.add(self.testbin)
- self.pipeline.add(self.src)
- self.pipeline.add(self.sink)
- self.src.link(self.sink)
- def run(self):
- print("PAUSED")
- self.pipeline.set_state(Gst.State.PAUSED)
- time.sleep(0.1)
- print("PLAYING")
- self.pipeline.set_state(Gst.State.PLAYING)
- self.mainloop.run()
- def kill(self):
- self.pipeline.set_state(Gst.State.NULL)
- self.mainloop.quit()
- example = Example()
- example.run()
|