def register_vlc(): """Register the SoundVLCPlayer as the default audio player. This applies to the Kivy SoundLoader class. To set as the default" from os import environ environ["KIVY_AUDIO"] = "vlcplayer" Other options include: ffpyplayer, sdl2 and gstplayer """ SoundLoader.register(SoundVLCPlayer)
self.player.stop() super(SoundGstplayer, self).stop() def unload(self): if self.player: self.player.unload() self.player = None def seek(self, position): self.player.seek(position / self.length) def get_pos(self): return self.player.get_position() def _get_length(self): return self.player.get_duration() def on_volume(self, instance, volume): self.player.set_volume(volume) def _get_uri(self): uri = self.filename if not uri: return if '://' not in uri: uri = 'file:' + pathname2url(realpath(uri)) return uri SoundLoader.register(SoundGstplayer)
if self._data is not None: if self._data.get_state()[1] == gst.STATE_PLAYING: try: return self._data.query_position(gst.Format(gst.FORMAT_TIME))[0] / 1000000000.0 except: pass return 0 def on_volume(self, instance, volume): if self._data is not None: self._data.set_property("volume", volume) def _get_length(self): if self._data is not None: if self._data.get_state()[1] != gst.STATE_PLAYING: volume_before = self._data.get_property("volume") self._data.set_property("volume", 0) self._data.set_state(gst.STATE_PLAYING) try: self._data.get_state() return self._data.query_duration(gst.Format(gst.FORMAT_TIME))[0] / 1000000000.0 finally: self._data.set_state(gst.STATE_NULL) self._data.set_property("volume", volume_before) else: return self._data.query_duration(gst.Format(gst.FORMAT_TIME))[0] / 1000000000.0 return super(SoundPyGst, self)._get_length() SoundLoader.register(SoundPyGst)
self._state = 'paused' self.state = 'stop' super(SoundFFPy, self).stop() def seek(self, position): if self._ffplayer is None: return self._ffplayer.seek(position, relative=False) def get_pos(self): if self._ffplayer is not None: return self._ffplayer.get_pts() return 0 def on_volume(self, instance, volume): if self._ffplayer is not None: self._ffplayer.set_volume(volume) def _get_length(self): if self._ffplayer is None: return super(SoundFFPy, self)._get_length() return self._ffplayer.get_metadata()['duration'] def _do_eos(self, *args): if not self.loop: self.stop() else: self.seek(0.) SoundLoader.register(SoundFFPy)
def stop(self): self.player.stop() super(SoundGstplayer, self).stop() def unload(self): if self.player: self.player.unload() self.player = None def seek(self, position): self.player.seek(position / self.length) def get_pos(self): return self.player.get_position() def _get_length(self): return self.player.get_duration() def on_volume(self, instance, volume): self.player.set_volume(volume) def _get_uri(self): uri = self.filename if not uri: return if not '://' in uri: uri = 'file:' + pathname2url(realpath(uri)) return uri SoundLoader.register(SoundGstplayer)
except: pass return 0 def on_volume(self, instance, volume): if self._data is not None: self._data.set_property('volume', volume) def _get_length(self): if self._data is not None: if self._data.get_state()[1] != Gst.State.PLAYING: volume_before = self._data.get_property('volume') self._data.set_property('volume', 0) self._data.set_state(Gst.State.PLAYING) try: self._data.get_state() ret, value = self._data.query_duration(Gst.Format.TIME) if ret: return value / float(Gst.SECOND) finally: self._data.set_state(Gst.State.NULL) self._data.set_property('volume', volume_before) else: ret, value = self._data.query_duration(Gst.Format.TIME) if ret: return value / float(Gst.SECOND) return super(SoundGi, self)._get_length() SoundLoader.register(SoundGi)
def build(self): SoundLoader.register(AudioModule) return Main()
def load(self): self.unload() if self.filename is None: return self._data = mixer.Sound(self.filename) def unload(self): self.stop() self._data = None def seek(self, position): # Unable to seek in pygame... pass def _get_volume(self): if self._data is not None: self._volume = self._data.get_volume() return super(SoundPygame, self)._get_volume() def _set_volume(self, volume): if self._data is not None: self._data.set_volume(volume) return super(SoundPygame, self)._set_volume(volume) def _get_length(self): if self._data is not None: return self._data.get_length() return super(SoundPygame, self)._get_length() SoundLoader.register(SoundPygame)
def _get_volume(self): if self._data is not None: self._volume = self._data.get_property('volume') return super(SoundGstreamer, self)._get_volume() def _set_volume(self, volume): if self._data is not None: self._data.set_property('volume', volume) return super(SoundGstreamer, self)._set_volume(volume) def _get_length(self): if self._data is not None: if self._data.get_state()[1] != gst.STATE_PLAYING: volume_before = self._data.get_property('volume') self._data.set_property('volume', 0) self._data.set_state(gst.STATE_PLAYING) try: self._data.get_state() return self._data.query_duration(gst.Format( gst.FORMAT_TIME))[0] / 1000000000. finally: self._data.set_state(gst.STATE_NULL) self._data.set_property('volume', volume_before) else: return self._data.query_duration(gst.Format (gst.FORMAT_TIME))[0] / 1000000000. return super(SoundGstreamer, self)._get_length() SoundLoader.register(SoundGstreamer)
from pprint import pprint from kivymd.app import MDApp from kivy.uix.boxlayout import BoxLayout from kivymd.uix.list import OneLineListItem, TwoLineIconListItem, IconLeftWidget, OneLineIconListItem from kivy.core.audio import SoundLoader from audio_android import SoundAndroid from collections import defaultdict import os SoundLoader.register(SoundAndroid) class PlayerWindow(BoxLayout): music_list = [] music_list2 = [] full = {} playing = '' directory = r'\Users\music-path' def __init__(self, **kwargs): super(PlayerWindow, self).__init__(**kwargs) self.get_music(self.directory) self.load_music() def get_music(self, path): for roots, directory, file in os.walk(path): for mp3 in file: if mp3.endswith('.mp3') or mp3.endswith('.m4a'):
self._avplayer.play() super(SoundAvplayer, self).play() def stop(self): if not self._avplayer: return self._avplayer.stop() super(SoundAvplayer, self).stop() def seek(self, position): if not self._avplayer: return self._avplayer.playAtTime_(float(position)) def get_pos(self): if self._avplayer: return self._avplayer.currentTime return super(SoundAvplayer, self).get_pos() def on_volume(self, instance, volume): if self._avplayer: self._avplayer.volume = float(volume) def _get_length(self): if self._avplayer: return self._avplayer.duration return super(SoundAvplayer, self)._get_length() SoundLoader.register(SoundAvplayer)
return self._avplayer.play() super(SoundAvplayer, self).play() def stop(self): if not self._avplayer: return self._avplayer.stop() super(SoundAvplayer, self).stop() def seek(self, position): if not self._avplayer: return self._avplayer.playAtTime_(float(position)) def get_pos(self): if self._avplayer: return self._avplayer.currentTime return super(SoundAvplayer, self).get_pos() def on_volume(self, instance, volume): if self._avplayer: self._avplayer.volume = float(volume) def _get_length(self): if self._avplayer: return self._avplayer.duration return super(SoundAvplayer, self)._get_length() SoundLoader.register(SoundAvplayer)
return value / float(Gst.SECOND) except: pass return 0 def on_volume(self, instance, volume): if self._data is not None: self._data.set_property('volume', volume) def _get_length(self): if self._data is not None: if self._data.get_state()[1] != Gst.State.PLAYING: volume_before = self._data.get_property('volume') self._data.set_property('volume', 0) self._data.set_state(Gst.State.PLAYING) try: self._data.get_state() ret, value = self._data.query_duration(Gst.Format.TIME) if ret: return value / float(Gst.SECOND) finally: self._data.set_state(Gst.State.NULL) self._data.set_property('volume', volume_before) else: ret, value = self._data.query_duration(Gst.Format.TIME) if ret: return value / float(Gst.SECOND) return super(SoundGi, self)._get_length() SoundLoader.register(SoundGi)
try: return self._data.query_position( gst.Format(gst.FORMAT_TIME))[0] / 1000000000. except: pass return 0 def on_volume(self, instance, volume): if self._data is not None: self._data.set_property('volume', volume) def _get_length(self): if self._data is not None: if self._data.get_state()[1] != gst.STATE_PLAYING: volume_before = self._data.get_property('volume') self._data.set_property('volume', 0) self._data.set_state(gst.STATE_PLAYING) try: self._data.get_state() return self._data.query_duration(gst.Format( gst.FORMAT_TIME))[0] / 1000000000. finally: self._data.set_state(gst.STATE_NULL) self._data.set_property('volume', volume_before) else: return self._data.query_duration( gst.Format(gst.FORMAT_TIME))[0] / 1000000000. return super(SoundPyGst, self)._get_length() SoundLoader.register(SoundPyGst)
def _get_volume(self): if self._data is not None: self._volume = self._data.get_property('volume') return super(SoundGstreamer, self)._get_volume() def _set_volume(self, volume): if self._data is not None: self._data.set_property('volume', volume) return super(SoundGstreamer, self)._set_volume(volume) def _get_length(self): if self._data is not None: if self._data.get_state()[1] != gst.STATE_PLAYING: volume_before = self._data.get_property('volume') self._data.set_property('volume', 0) self._data.set_state(gst.STATE_PLAYING) try: self._data.get_state() return self._data.query_duration( gst.Format(gst.FORMAT_TIME))[0] / 1000000000. finally: self._data.set_state(gst.STATE_NULL) self._data.set_property('volume', volume_before) else: return self._data.query_duration(gst.Format( gst.FORMAT_TIME))[0] / 1000000000. return super(SoundGstreamer, self)._get_length() SoundLoader.register(SoundGstreamer)
self.state = 'stop' super(SoundFFPy, self).stop() def seek(self, position): if self._ffplayer is None: return self._ffplayer.seek(position, relative=False) def get_pos(self): if self._ffplayer is not None: return self._ffplayer.get_pts() return 0 def on_volume(self, instance, volume): if self._ffplayer is not None: self._ffplayer.set_volume(volume) def _get_length(self): if self._ffplayer is None: return super(SoundFFPy, self)._get_length() return self._ffplayer.get_metadata()['duration'] def _do_eos(self, *args): if not self.loop: self.stop() else: self.seek(0.) SoundLoader.register(SoundFFPy)
def seek(self, position): if not self._mediaplayer: return self._mediaplayer.seekTo(float(position) * 1000) def get_pos(self): if self._mediaplayer: return self._mediaplayer.getCurrentPosition() / 1000. return super(SoundAndroidPlayer, self).get_pos() def on_volume(self, instance, volume): if self._mediaplayer: volume = float(volume) self._mediaplayer.setVolume(volume, volume) def _completion_callback(self): super(SoundAndroidPlayer, self).stop() def _get_length(self): if self._mediaplayer: return self._mediaplayer.getDuration() / 1000. return super(SoundAndroidPlayer, self)._get_length() def on_loop(self, instance, loop): if self._mediaplayer: self._mediaplayer.setLooping(loop) SoundLoader.register(SoundAndroidPlayer)
def unload(self): self.stop() self._data = None def seek(self, position): if not self._data: return if _platform == 'android' and self._channel: self._channel.seek(position) def get_pos(self): if self._data is not None and self._channel: if _platform == 'android': return self._channel.get_pos() return Clock.time() - self.start_time return 0 def on_volume(self, instance, volume): if self._data is not None: self._data.set_volume(volume) def _get_length(self): if _platform == 'android' and self._channel: return self._channel.get_length() if self._data is not None: return self._data.get_length() return super(SoundPygame, self)._get_length() SoundLoader.register(SoundPygame)
def RegisterSoundProvider(): Logger.info("Register MP3 Sound on Android") SoundLoader.register(SoundAndroid)