2012-04-04 66 views
0

我想用pygame播放歌曲,但它不會播放歌曲。pygame無法正常工作

我的代碼:

import pygame,time 
pygame.init() 
print "Mixer settings", pygame.mixer.get_init() 
print "Mixer channels", pygame.mixer.get_num_channels() 
pygame.mixer.music.set_volume(1.0) 
pygame.mixer.music.load('C:/1.mp3') 
print "Play" 
pygame.mixer.music.play(0) 
while pygame.mixer.music.get_busy(): 
    print "Playing", pygame.mixer.music.get_pos() 
time.sleep(1) 
print "Done" 

我得到輸出

Mixer settings (22050, -16, 2) 
Mixer channels 8 
Play 
Done 

回答

1

您的代碼工作對我來說,對Lubuntu 11.10運行的Python 2.7.2,與MP3我從YouTube視頻轉換。你是否檢查過mp3不是零長度?你有沒有試過一個wav文件?

缺乏其他解釋,我認爲pygame.mixer.music.get_busy()可能會返回false如果play(0)調用尚未完成啓動其進程或線程。 這會導致您的代碼跳過while循環,打印「完成」並終止,刪除音樂播放器對象並在您聽到任何聲音之前終止播放。如果這是問題,您可以在play(0)之後和之前嘗試這樣的事情print Done

pygame.mixer.music.set_endevent(pygame.USEREVENT) 
finishedPlaying = False 

while not finishedPlaying: 
    for event in pygame.event.get(): 
     if event.type == pygame.USEREVENT: 
      finishedPlaying = True 
      break # only because we don't care about any other events 
    print "Playing", pygame.mixer.music.get_pos() # will print -1 on the last iteration 
0
在pygame.mixer.music.play我發現這個評論

November 18, 2010 7:30pm - Anonymous 
Work Exmpl: 

pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096) 
sound = pygame.mixer.Sound('Time_to_coffee.wav').play() 

也好像你的s結尾0作爲你想重複的次數謝謝Iskar Jarak,-1是無窮大。

http://www.pygame.org/docs/ref/music.html#pygame.mixer.music.play

+0

感謝您的解決方案。我試過這個。但是,它仍然沒有演奏這首歌。 – chom 2012-04-05 00:43:12

+0

「請注意,MP3支持有限,在某些系統上,不支持的格式會導致程序崩潰,例如Debian Linux,請考慮使用OGG。」 – apple16 2012-04-05 00:49:18

+1

「也似乎你發送0的次數是你想要播放的次數,-1是無窮大。」這是不正確的 - 參數是重複次數。 0應播放一次歌曲。 – 2012-04-05 00:56:08