Merge lp:~simonvermeersch/python-snippets/gstreamer-video into lp:~jonobacon/python-snippets/trunk

Proposed by Simon Vermeersch
Status: Merged
Merged at revision: not available
Proposed branch: lp:~simonvermeersch/python-snippets/gstreamer-video
Merge into: lp:~jonobacon/python-snippets/trunk
Diff against target: 53 lines (+49/-0)
1 file modified
gstreamer/video.py (+49/-0)
To merge this branch: bzr merge lp:~simonvermeersch/python-snippets/gstreamer-video
Reviewer Review Type Date Requested Status
Jono Bacon Pending
Review via email: mp+20769@code.launchpad.net

Description of the change

Snippet that shows how to play a video with gstreamer

To post a comment you must log in.
37. By Jono Bacon <jono@forge>

Merged in a bunch of awesome changes from RainCT.

38. By Jono Bacon <jono@forge>

Drag and open snippet, thanks Rich!

39. By Jono Bacon <jono@forge>

Gstreamer video playback snippet, thanks, Simon!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'gstreamer/video.py'
2--- gstreamer/video.py 1970-01-01 00:00:00 +0000
3+++ gstreamer/video.py 2010-03-05 17:59:18 +0000
4@@ -0,0 +1,49 @@
5+
6+# [SNIPPET_NAME: Gstreamer video]
7+# [SNIPPET_CATEGORIES: GStreamer, PyGTK]
8+# [SNIPPET_DESCRIPTION: Plays a video inside a window ]
9+# [SNIPPET_AUTHOR: Simon Vermeersch <simonvermeersch@gmail.com>]
10+# [SNIPPET_LICENSE: GPL]
11+#
12+import os
13+import gst, gtk, gobject
14+
15+class VideoPlayer:
16+ def __init__(self):
17+ self.window = gtk.Window()
18+ self.window.connect('destroy', self.on_destroy)
19+
20+ self.drawingarea = gtk.DrawingArea()
21+ self.drawingarea.connect('realize', self.on_drawingarea_realized)
22+ self.window.add(self.drawingarea)
23+
24+ self.playbin = gst.element_factory_make('playbin2')
25+ self.playbin.set_property('uri', 'file:///usr/share/example-content/Ubuntu_Free_Culture_Showcase/water-and-wind.ogv')
26+
27+ self.sink = gst.element_factory_make('xvimagesink')
28+ self.sink.set_property('force-aspect-ratio', True)
29+ self.playbin.set_property('video-sink', self.sink)
30+
31+ self.bus = self.playbin.get_bus()
32+ self.bus.add_signal_watch()
33+ self.bus.connect("message::eos", self.on_finish)
34+
35+ self.window.show_all()
36+
37+ self.playbin.set_state(gst.STATE_PLAYING)
38+
39+ def on_finish(self, bus, message):
40+ self.playbin.set_state(gst.STATE_PAUSED)
41+
42+ def on_destroy(self, window):
43+ self.playbin.set_state(gst.STATE_NULL)
44+ gtk.main_quit()
45+
46+ def on_drawingarea_realized(self, sender):
47+ self.sink.set_xwindow_id(self.drawingarea.window.xid)
48+
49+
50+if __name__ == "__main__":
51+ VideoPlayer()
52+ gtk.main()
53+

Subscribers

People subscribed via source and target branches