Merge pull request #1506 from forslund/feature/vlc-update

Feature/vlc update
pull/1681/merge
Michael Nguyen 2018-07-18 11:28:33 -05:00 committed by GitHub
commit fb2a6209ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 6 deletions

View File

@ -13,7 +13,6 @@
# limitations under the License.
#
import vlc
import time
from mycroft.audio.services import AudioBackend
from mycroft.util.log import LOG
@ -35,6 +34,7 @@ class VlcService(AudioBackend):
self.emitter = emitter
self.name = name
self.normal_volume = None
self.low_volume = self.config.get('low_volume', 30)
def track_start(self, data, other):
if self._track_start_callback:
@ -44,21 +44,27 @@ class VlcService(AudioBackend):
return ['file', 'http', 'https']
def clear_list(self):
# Create a new media list
self.track_list = self.instance.media_list_new()
# Set list as current track list
self.list_player.set_media_list(self.track_list)
def add_list(self, tracks):
LOG.info("Track list is " + str(tracks))
LOG.debug("Track list is " + str(tracks))
for t in tracks:
self.track_list.add_media(self.instance.media_new(t))
def play(self):
LOG.info('VLCService Play')
""" Play playlist using vlc. """
LOG.debug('VLCService Play')
self.list_player.play()
def stop(self):
""" Stop vlc playback. """
LOG.info('VLCService Stop')
if self.player.is_playing():
# Restore volume if lowered
self.restore_volume()
self.clear_list()
self.list_player.stop()
return True
@ -66,28 +72,41 @@ class VlcService(AudioBackend):
return False
def pause(self):
""" Pause vlc playback. """
self.player.set_pause(1)
def resume(self):
""" Resume paused playback. """
self.player.set_pause(0)
def next(self):
""" Skip to next track in playlist. """
self.list_player.next()
def previous(self):
""" Skip to previous track in playlist. """
self.list_player.previous()
def lower_volume(self):
if self.normal_volume is None:
""" Lower volume (will be called when mycroft is listening
or speaking.
"""
# Lower volume if playing, volume isn't already lowered
# and ducking is enabled
if (self.normal_volume is None and self.player.is_playing() and
self.config.get('duck', False)):
self.normal_volume = self.player.audio_get_volume()
self.player.audio_set_volume(self.normal_volume / 5)
self.player.audio_set_volume(self.low_volume)
def restore_volume(self):
""" Restore volume to previous level. """
# if vlc has been lowered restore the volume
if self.normal_volume:
self.player.audio_set_volume(self.normal_volume)
self.normal_volume = None
def track_info(self):
""" Extract info of current track. """
ret = {}
meta = vlc.Meta
t = self.player.get_media()

View File

@ -296,7 +296,8 @@
},
"vlc": {
"type": "vlc",
"active": true
"active": true,
"duck": true
}
},
"default-backend": "local"