Pygame无法打开声音文件

时间:2013-02-13 03:23:33

标签: python audio pygame

import pygame, time
from pygame.locals import *

soundObj = pygame.mixer.Sound('beeps.wav')
soundObj.play()

time.sleep(1) # wait and let the sound play for 1 second
soundObj.stop()

并抛出此错误:

Traceback (most recent call last):
  File "C:/Users/Jauhar/Desktop/Python/sounds.py", line 4, in <module>
    soundObj = pygame.mixer.Sound('beeps.wav')
pygame.error: Unable to open file 'beeps.wav'

beeps.wav文件保存在与代码所在的python文件相同的目录中。

我无法理解为什么它不起作用!

8 个答案:

答案 0 :(得分:6)

你不能使用pygames的库,除非你初始化你使用的模块或所有的pygame。

    pygame.mixer.pre_init(44100, 16, 2, 4096) #frequency, size, channels, buffersize
    pygame.init() #turn all of pygame on.

在pygame中执行任何操作之前执行这些操作。我推荐它。

答案 1 :(得分:5)

Pygame(至少版本2.9)不支持32位浮点WAV。 将其重新编码为带符号的16位WAV(例如使用Audacity)。

答案 2 :(得分:0)

尝试记录此信息,您可能会发现问题。

import os
os.getcwd() # Log this line.
soundObj = pygame.mixer.Sound('beeps.wav')

这应该告诉您在尝试访问声音文件时应用程序正在查找的目录。您可能会发现它位于游戏目录的基础上。

答案 3 :(得分:0)

遇到类似的问题,我发现.wav文件的大小与问题有关。使.wav文件更小使其能够在不对问题进行重大修改的情况下工作

答案 4 :(得分:0)

如果我在播放声音之前创建一个显示表面,同样的程序适用于我。

    #! Python 3
'''
Making games with python chapter 2 program 5
'''
import pygame, sys, time
from pygame.locals import*

pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption("Sound!!")

soundObj = pygame.mixer.Sound('badswap.wav')
soundObj.play()
time.sleep(1) #wait and let the sound play for X second
soundObj.stop()

while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
        pygame.display.update()

答案 5 :(得分:0)

在pygame.init()之后有声音文件。我遇到了这个问题,但在放完声音文件后,它对我来说效果很好。

答案 6 :(得分:0)

遇到了同样的问题,并且从wav文件中删除了ID标签即可。因此可能值得检查文件是否包含一个文件!

答案 7 :(得分:-1)

这对我有用:

pygame.mixer.init()