为啥 PyGame 不播放声音
Posted
技术标签:
【中文标题】为啥 PyGame 不播放声音【英文标题】:Why is PyGame Not Playing Sounds为什么 PyGame 不播放声音 【发布时间】:2015-12-14 01:05:11 【问题描述】:我正在 PyGame 中制作游戏并开始添加一些声音。我添加的一种声音可以正确播放,但我添加的另一种声音只会播放几毫秒(我假设,看到我听到的只是短暂的点击)。我尝试在它之后调用 time.sleep() ,但我仍然得到那个短按。我做了一个测试程序,声音仍然没有播放。如有任何帮助/建议,我将不胜感激。
import pygame
pygame.init()
JohnCena = pygame.mixer.Sound('JohnCena.mp3')
def main():
JohnCena.play(0,0,0)
raw_input()
main()
【问题讨论】:
另一个声音是 OGG 文件吗? MP3 在 Pygame 中不能很好地工作。 【参考方案1】:首先,mp3 在 pygame 中不能很好地工作。 您的代码应该可以正常工作。 一个问题是你正在做
loops = 0
在主函数中。
您应该将文件扩展名更改为 *.ogg(因为 ogg 文件运行良好)并尝试以下代码:
import pygame
pygame.init()
music = pygame.mixer.music.load('file.ogg')
def main():
pygame.music.play(loops=-1, start=0)
raw_input()
main()
你唯一需要改变的是
pygame.mixer.music.load('file.ogg')
线。 小心将文件扩展名更改为其他内容, 因为 pygame 只加载未压缩的 *.wav 文件和 *.ogg 文件!
【讨论】:
【参考方案2】:Pygame 似乎只支持.ogg and raw .wav
也试试这个副本:Pygame, sounds don't play
如果您仍然卡住,根据我在the simplest pygame example I know 中找到的内容(并已使用),您可能需要在加载声音之前添加pygame.mixer.init()
。
【讨论】:
pygame.mixer.init()
在这里不是必需的,因为 OP 的程序有 pygame.init()
,它会初始化所有 Pygame 模块。
黑猩猩的例子也有,这很奇怪,但我认为这背后是有原因的。它不太可能是 op 出现问题的原因,但如果 1 和 2 失败,值得一试。
我尝试在 Audacity 程序中将音频导出为 wav 而不是 mp3,但我仍然只能听到咔哒声。我尝试了一些来自声音圣经的声音,这些声音是 wav 格式的原始声音,但它们也不起作用。但由于某种原因,在我的程序中可以正常播放一种声音...?
pygame.init()
并不总是有效,但您可以同时使用 pygame.init()
和模块的 init()
函数(如 display
或 mixer
)来解决此问题以上是关于为啥 PyGame 不播放声音的主要内容,如果未能解决你的问题,请参考以下文章