X-Git-Url: https://git.slaskete.net/python-gstreamer-examples/blobdiff_plain/b54b187e73a58eb84029383355ae66f95d17d75a..cff7d2b533afd93201d316a24d34137f55714cc0:/example1.py?ds=sidebyside diff --git a/example1.py b/example1.py index 3d944ba..ad21708 100755 --- a/example1.py +++ b/example1.py @@ -1,19 +1,22 @@ #!/usr/bin/env python -# This is a reworked version of the example from Jono Bacon's Python+Gstreamer -# primer: http://www.jonobacon.org/2006/08/28/getting-started-with-gstreamer-with-python/ -# +# This is a reworked version gstreamer example 1 from Jono Bacon's Python and +# Gstreamer primer: +# http://www.jonobacon.org/2006/08/28/getting-started-with-gstreamer-with-python +# # It uses Gstreamer 1.0, and replaces alsa with pulse for audio output, and # drops the use of the GTK main loop, since we're not bothered with a GUI # Info on porting python scripts to Gstreamer 1.0 can be found here: # https://wiki.ubuntu.com/Novacut/GStreamer1.0 -from gi.repository import Gst, GObject +import gi, time, signal +gi.require_version('Gst', '1.0') +from gi.repository import Gst class Main: def __init__(self): # Initiate the pipeline Gst.init(None) - self.pipeline = Gst.Pipeline("mypipeline") + self.pipeline = Gst.Pipeline() # Add an audiotestsrc element to the pipeline self.audiotestsrc = Gst.ElementFactory.make("audiotestsrc", "audio") @@ -29,7 +32,16 @@ class Main: # Set the pipeline to the playing state self.pipeline.set_state(Gst.State.PLAYING) -# Create the pipelie and enter main loop, quit with ctrl+c -start = Main() -mainloop = GObject.MainLoop() -mainloop.run() + # We want a graceful shutdown on CTRL+C + def quit(signal, frame): + print("stopping") + exit(0) + + # Trap SIGINT + signal.signal(signal.SIGINT, quit) + +# Create the pipeline and enter main loop, quit with ctrl+c + +Main() +while True: + time.sleep(0.001)