如何用pygame播放mp3?
import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
这个输出显示“进程以退出代码0结束”,但它没有播放任何东西。我该如何解决这个问题呢?
7 个回答
16
这里有一个超级简单的方法。
import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
pygame.event.wait()
18
音乐停止是因为它是一个异步事件,这意味着它会和脚本一起继续运行。然后,脚本会立刻停止,这样就没有给音乐一个开始的机会。
之前提到过,你可以使用
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
不过,更好的方法是 pygame.event.wait()
,因为它会等待所有异步事件结束。
31
play函数开始播放音乐,但它会立刻返回,不会等音乐播放完。然后你的程序就结束了,这时候pygame对象会自动被销毁,这就导致音乐停止了。
正如你所说,如果你在退出之前等一等,它确实会播放音乐——因为这样pygame对象在while循环结束之前不会被销毁。
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)