如何用pygame播放mp3?

34 投票
7 回答
99953 浏览
提问于 2025-04-17 04:11
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)

撰写回答