2016-04-06 34 views
1
import vlc 
import sys 
def player(): 
    song_list=['C:/Users/Public/Music/SampleMusic/Sleep.mp3', 
       'C:/Users/Public/Music/SampleMusic/Away.mp3'] 
    instance=vlc.Instance() 
    for song in song_list: 
     player=instance.media_player_new() 
     media=instance.media_new(song) 
     media.get_mrl() 
     player.set_media(media) 
     player.play() 
     if 'stop' in raw_input('Command'): 
      player.stop() 
      sys.exit() 

dies meinem Code zu spielen versuchen, Songs zu spielen, die in der Liste mit liblvlc Python-Bindings alles funktioniert gut, wenn ich nur ein Lied spielen, aber wenn ich versuche, über eine Liste von Songs nichts Schleife get playednicht in der Lage Datei mit vlc Python Bindung

Antwort

3

Sie müssen es in eine Schleife setzen, die darauf wartet, dass jedes Lied zu Ende gespielt wird.
Ein einfacher Weg ist wie folgt:

import vlc 
import time 
song_list=['/path_to_song1/my.mp3','/path_to_song2/other.mp3'] 
instance=vlc.Instance() 
for song in song_list: 
    player=instance.media_player_new() 
    media=instance.media_new(song) 
    print song 
    media.get_mrl() 
    player.set_media(media) 
    player.play() 
    playing = set([1,2,3,4]) 
    time.sleep(1) #Give time to get going 
    duration = player.get_length()/1000 
    mm, ss = divmod(duration, 60) 
    print "Playing", song, "Length:", "%02d:%02d" % (mm,ss) 
    while True: 
     state = player.get_state() 
     if state not in playing: 
      break 
     continue