为啥 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() 函数(如 displaymixer)来解决此问题

以上是关于为啥 PyGame 不播放声音的主要内容,如果未能解决你的问题,请参考以下文章

我需要帮助在 Replit(Pygame) 上播放声音

Pygame:声音只播放8次,然后关闭4次,然后打开,然后关闭,然后再打开

在 pygame Windows 中播放声音的问题

Pygame - 声音延迟

为啥不播放声音?

为啥我的 AVAudioPlayer 不播放声音?