10
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 文件相同的目录中。

我不明白为什么它不起作用!

4

8 回答 8

10

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

于 2017-02-01T21:22:41.120 回答
8

除非您初始化您使用的模块或全部 pygame,否则您不能使用 pygames 的库。

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

在你在 pygame 中做任何事情之前先做这些。我推荐它。

于 2013-02-13T08:12:05.873 回答
0

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

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

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

于 2013-02-13T03:36:57.613 回答
0

这对我有用:

pygame.mixer.init() 
于 2020-01-08T15:22:15.207 回答
0

刚遇到同样的问题,从 wav 文件中删除 ID 标签有效。所以可能值得检查文件是否有一个!

于 2020-03-31T13:09:43.353 回答
0

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

于 2017-02-23T18:24:43.220 回答
0

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

于 2016-01-10T23:27:38.833 回答
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()
于 2016-12-17T11:44:46.327 回答