diff options
Diffstat (limited to 'sc_gst.py')
-rw-r--r-- | sc_gst.py | 63 |
1 files changed, 36 insertions, 27 deletions
@@ -30,48 +30,53 @@ import time class ScreencastGstreamer(gobject.GObject): - # Attributes - _pipeline = None - _videofile = None - _timer = None - _videoitems = None - _audioitems = None - _oggmux = None - _filesink = None - _startclock = None - - # Custom signals __gsignals__ = { - "update-info": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_STRING,)) + "update-info": (gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, (gobject.TYPE_STRING,gobject.TYPE_STRING,)) } - def __init__(self, activity, videofile): + def __init__(self, videofile): """ Constructor """ + super(ScreencastGstreamer, self).__init__() - - self._activity = activity + + self._audioitems = False + self._startclock = False self._videofile = videofile - self.createPipeline() + self._pipeline = False + self._timer = False + self._oggmux = False + self._videoitems = False + self._filesink = False def stop(self): """ Stop recording """ - self._pipeline.set_state(gst.STATE_PAUSED) - self._pipeline.set_state(gst.STATE_NULL) - del(self._pipeline) - self._pipeline = None - + if self._timer: gobject.source_remove(self._timer) - self._timer = None + self._timer = False + + self._pipeline.set_state(gst.STATE_PAUSED) + self._pipeline.set_state(gst.STATE_NULL) def start(self, recordsound): """ Start recording """ - self._pipeline = gst.Pipeline("screencast-pipeline") + + if self._pipeline: + del(self._pipeline) + + if self._timer: + gobject.source_remove(self._timer) + self._timer = None + + self.createPipeline() + self.addItems(recordsound) self.linkItems(recordsound) + self._pipeline.set_state(gst.STATE_PLAYING) self._startclock = time.time() self._timer = gobject.timeout_add(1000, self.updateInfo) @@ -118,11 +123,12 @@ class ScreencastGstreamer(gobject.GObject): def updateInfo(self): """ Update info """ + videofilesize = "0 Kb" - videolength = "%d s" % ( time.time() - self._startclock ) + videolength = "%s s" % ( int(time.time() - self._startclock)) if os.path.exists(self._videofile): - videofilesize = "%d Kb" % ( int(os.path.getsize(self._videofile)/1024) ) + videofilesize = "%s Kb" % ( int(int(os.path.getsize(self._videofile)) / 1024)) self.emit('update-info', videofilesize, videolength) @@ -132,6 +138,7 @@ class ScreencastGstreamer(gobject.GObject): def createVideoItems(self): """ Create video items """ + ximagesrc = gst.element_factory_make('ximagesrc', "ximagesrc") ximagesrc.set_property('startx', 0) ximagesrc.set_property('endx', 1200) @@ -197,10 +204,12 @@ class ScreencastGstreamer(gobject.GObject): mux. mux. ! \ filesink location=video.ogg """ - + + self._pipeline = gst.Pipeline("player") + self.createVideoItems() self.createAudioItems() + self._oggmux = gst.element_factory_make('oggmux', "oggmux") self._filesink = gst.element_factory_make('filesink', "filesink") self._filesink.set_property("location", self._videofile) - |