vlc.py: kein MediaMetaChanged event währned streams

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
redeagle
User
Beiträge: 10
Registriert: Freitag 2. November 2012, 12:25
Wohnort: Erde
Kontaktdaten:

Hi
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)
Der Code zum testen:

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)
Gebe ich 'p' ein, so wird der gerade gespielte Song korrekt ausgegeben, eigenständig, also durch das Event, wird die Callback-Funktion allerdings nicht aufgerufen.
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?
mfg.: redeagle
Antworten