I am trying to save a stream from a webcam as a series of images using gstreamer. I have written this code so far ...
#!/usr/bin/python import sys, os import pygtk, gtk, gobject import pygst pygst.require("0.10") import gst def __init__(self): #.... # Code to create a gtk Window #.... self.player = gst.Pipeline("player") source = gst.element_factory_make("v4l2src", "video-source") sink = gst.element_factory_make("xvimagesink", "video-output") caps = gst.Caps("video/x-raw-yuv, width=640, height=480") filter = gst.element_factory_make("capsfilter", "filter") filter.set_property("caps", caps) self.player.add(source, filter, sink) gst.element_link_many(source, filter, sink)
After that, I try to create a signal on the bus to listen to any message from the source or receiver, to indicate that a new frame has been sent or received so that it can be saved.
bus = self.player.get_bus() bus.add_signal_watch() bus.connect("message::any", self.save_file,"Save file")
where save_file is my callback where I want to save the file.
def save_file(self, bus, msg): print "SAVED A NEW FILE"
I have two questions:
- How do I call this callback. The message :: any does not work.
- When this message is called, how do I access the image buffer.
UPDATE (4-12-2012):
A couple of links for reference
source share