diff options
Diffstat (limited to 'creactistore/_templates/lib/olpcfr/tools/sound.py')
-rw-r--r-- | creactistore/_templates/lib/olpcfr/tools/sound.py | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/creactistore/_templates/lib/olpcfr/tools/sound.py b/creactistore/_templates/lib/olpcfr/tools/sound.py deleted file mode 100644 index 7ac6a57..0000000 --- a/creactistore/_templates/lib/olpcfr/tools/sound.py +++ /dev/null @@ -1,111 +0,0 @@ - -# python import -import gst -# .. -from datetime import timedelta - - -class Player(object): - - def __init__(self, loop=False): - # playing flag - self.playing = False - self.loop = loop - # player object - self.player = None - self._init_player() - # file to play - self._soundfile = None - - def _reload_cb(self, bus, message): - if self.loop is True: - self.player.set_state(gst.STATE_READY) - self.player.set_state(gst.STATE_PLAYING) - else: - pass - - def _error_cb(self, bus, message): - self.player.set_state(gst.STATE_NULL) - - def _init_player(self): - # make player - self.player = gst.element_factory_make("playbin", "player") - # video fake - _fakesink = gst.element_factory_make('fakesink', "my-fakesink") - self.player.set_property("video-sink", _fakesink) - # bus .. - bus = self.player.get_bus() - bus.add_signal_watch() - bus.connect('message::eos', self._reload_cb) - bus.connect('message::error', self._error_cb) - - def serialize(self): - # little check - if self._soundfile is None: - return None - else: - return file(self._soundfile, 'r').read() - - def load(self, soundfile): - # file to play - self._soundfile = soundfile - # little check - if self._soundfile is None: - pass - else: - # load sound file - self.player.set_state(gst.STATE_NULL) - self.player.set_property('uri', 'file://' + self._soundfile) - - def get_position(self): - # little check - if self._soundfile is None: - return None - else: - # ... - _position = self.player.query_duration(gst.FORMAT_TIME)[0] - # ... - return timedelta(seconds=(_position / gst.SECOND)) - - def get_duration(self): - # little check - if self._soundfile is None: - return None - else: - # _duration = self.player.query_duration(gst.FORMAT_TIME)[0] - # .. - _parser = gst.parse_launch("filesrc name=source ! decodebin2 ! fakesink") - # .. - _source = _parser.get_by_name("source") - _source.set_property("location", self._soundfile) - # .. - _parser.set_state(gst.STATE_PLAYING) - _parser.get_state() - # .. - _format = gst.Format(gst.FORMAT_TIME) - _duration = _parser.query_duration(_format)[0] - _parser.set_state(gst.STATE_NULL) - # .. - return timedelta(seconds=(_duration / gst.SECOND)) - - def seek(self, time): - # little check - if self._soundfile is None: - return - else: - # format time - _seek = time * 1000000000 - # do seek - self.player.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, _seek) - - def play(self): - self.playing = True - self.player.set_state(gst.STATE_PLAYING) - - def pause(self): - self.playing = False - self.player.set_state(gst.STATE_PAUSED) - - def stop(self): - self.playing = False - self.player.set_state(gst.STATE_NULL) |