0

我正在尝试用 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
4

2 回答 2

1

您的代码适用于我,在运行 Python 2.7.2 的 Lubuntu 11.10 上,使用我从 Youtube 剪辑转换的 MP3。您是否检查过 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
于 2012-04-05T01:15:43.517 回答
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()

似乎您发送 0 作为您想要重复它的次数感谢 Iskar Jarak,-1 是无穷大。

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

于 2012-04-05T00:27:19.220 回答