Exemple #1
0
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)
Exemple #3
0
        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)
Exemple #4
0
            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)
Exemple #5
0
    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)
Exemple #6
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()
                    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()
Exemple #8
0
    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)
Exemple #9
0
    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)
Exemple #10
0
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'):
Exemple #11
0
        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)
Exemple #12
0
            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)
Exemple #13
0
                        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)
Exemple #14
0
                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)
Exemple #15
0
    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)
Exemple #17
0
    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)
Exemple #18
0
    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)
Exemple #19
0
def RegisterSoundProvider():
    Logger.info("Register MP3 Sound on Android")
    SoundLoader.register(SoundAndroid)