From: Einar Jørgen Haraldseid Date: Fri, 2 Jun 2017 20:26:53 +0000 (+0200) Subject: Fixes for python3 + cleanups X-Git-Url: https://git.slaskete.net/python-gstreamer-examples/commitdiff_plain/cc05679084a7164c5575feb7e6c85875ed903997?ds=sidebyside;hp=f61c6e101a8ccc6559c475b33d2fa0a7ba0a96ba Fixes for python3 + cleanups --- diff --git a/example1.py b/example1.py index 9c41425..5916bb4 100755 --- a/example1.py +++ b/example1.py @@ -1,7 +1,7 @@ #!/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/ -# +# # 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: @@ -9,7 +9,7 @@ import gi gi.require_version('Gst', '1.0') -from gi.repository import Gst, GObject +from gi.repository import Gst, GLib class Main: def __init__(self): @@ -33,5 +33,9 @@ class Main: # Create the pipelie and enter main loop, quit with ctrl+c start = Main() -mainloop = GObject.MainLoop() -mainloop.run() +mainloop = GLib.MainLoop() + +try: + mainloop.run() +except KeyboardInterrupt: + exit(0) diff --git a/example2+3.py b/example2+3.py index 44da53d..9a39c4e 100755 --- a/example2+3.py +++ b/example2+3.py @@ -77,23 +77,23 @@ class Main: self.win_id = self.mainwindow.get_object("viewport").get_window().get_xid() - # When we get a message that video is ready to display, set the + # When we get a message that video is ready to display, set the # correct window id to hook it to our viewport def OnSyncElement(self, bus, message): if message.get_structure().get_name() == "prepare-window-handle": - print "prepare-window-handle" + print("prepare-window-handle") message.src.set_window_handle(self.win_id) def OnPlay(self, widget): - print "play" + print("play") self.pipeline.set_state(Gst.State.PLAYING) def OnStop(self, widget): - print "stop" + print("stop") self.pipeline.set_state(Gst.State.READY) def OnQuit(self, widget): - print "quit" + print("quit") Gtk.main_quit() # Workaround to get Ctrl+C to terminate from command line diff --git a/example2.py b/example2.py index 1c8c17e..7edd159 100755 --- a/example2.py +++ b/example2.py @@ -14,12 +14,12 @@ import signal class Main: def __init__(self): - + # Create gui bits and bobs self.wTree = Gtk.Builder() self.wTree.add_from_file("example2.glade") - + signals = { "on_play_clicked" : self.OnPlay, "on_stop_clicked" : self.OnStop, @@ -53,15 +53,15 @@ class Main: def OnPlay(self, widget): - print "play" + print("play") self.pipeline.set_state(Gst.State.PLAYING) def OnStop(self, widget): - print "stop" + print("stop") self.pipeline.set_state(Gst.State.READY) - + def OnQuit(self, widget): - print "quit" + print("quit") Gtk.main_quit() # Workaround to get Ctrl+C to terminate from command line diff --git a/example3.py b/example3.py index f5af59b..3ee0eb5 100755 --- a/example3.py +++ b/example3.py @@ -13,12 +13,12 @@ import signal class Main: def __init__(self): - + # Create gui bits and bobs self.mainwindow = Gtk.Builder() self.mainwindow.add_from_file("example3.glade") - + signals = { "on_play_clicked" : self.OnPlay, "on_stop_clicked" : self.OnStop, @@ -37,12 +37,12 @@ class Main: self.videotestsrc = Gst.ElementFactory.make("videotestsrc", "videosource") self.videotestsrc.set_property("pattern", "snow") self.pipeline.add(self.videotestsrc) - + # Add a capsfilter that we want to apply to our videotestsrc self.videotestcaps = Gst.ElementFactory.make("capsfilter", "videotestcaps") self.videotestcaps.set_property("caps",Gst.Caps.from_string("video/x-raw,width=640,height=480")) self.pipeline.add(self.videotestcaps) - + # Link the capsfilter to the videotestsrc self.videotestsrc.link(self.videotestcaps) @@ -52,17 +52,17 @@ class Main: # Link the already linked videotestcaps to the sink self.videotestcaps.link(self.videosink) - + # Set up a bus to our pipeline to get notified when the video is ready self.bus = self.pipeline.get_bus() self.bus.enable_sync_message_emission() self.bus.connect("sync-message::element", self.OnSyncElement) - + # Summon the window and connect the window's close button to quit self.window = self.mainwindow.get_object("mainwindow") self.window.connect("delete-event", Gtk.main_quit) self.window.show_all() - + # Get window ID of the viewport widget from the GUI self.win_id = self.mainwindow.get_object("viewport").get_window().get_xid() @@ -81,7 +81,7 @@ class Main: def OnStop(self, widget): print("stop") self.pipeline.set_state(Gst.State.READY) - + def OnQuit(self, widget): print("quit") Gtk.main_quit()