Ich möchte Musik-Streams mithilfe der libvlc (vlc.py) abspielen und die dazu gehörigen Meta-Daten anzeigen. Allerdings gelingt es mir nicht VLC dazu zu bringen eine entsprechende Callback-Funktion aufzurufen.
Der eigentliche Player:
Code: Alles auswählen
import vlc
class Player(object):
def __init__(self):
self.Instance = vlc.Instance()
self.MediaPlayer = self.Instance.media_player_new()
self.Media = None
self.MediaManager = None
self.MediaPlayerManager = None
def Play(self, source):
if not source : return
self.Media = self.Instance.media_new(source)
self.MediaPlayer.set_media(self.Media)
self.MediaPlayer.play()
self.MediaPlayer.audio_set_volume(0)
self.MediaManager = self.Media.event_manager()
self.MediaManager.event_attach(vlc.EventType.MediaMetaChanged, self._CBMetaDataChanged, self.Media)
def _CBMetaDataChanged(self, event, media):
nowplaying = media.get_meta(vlc.Meta.NowPlaying)
print('Now Playing: %s' % nowplaying)
Code: Alles auswählen
import player
if __name__ == '__main__':
p1 = player.Player()
p1.Play('http://85.25.150.163:7500')
cmd = "-"
while cmd != "exit":
cmd = input("> ")
if cmd == "p":
p1._CBMetaDataChanged(None, p1.Media)
Nun ja, "nicht aufgerufen" ist nicht ganz richtig, wenn ich das Script starte, wird ein einziges mal die Callback aufgerufen und "Now Playing: None" ausgegeben.
Hat jemand eine Idee woran das liegen kann?