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文件相同的目录中。
我无法理解为什么它不起作用!
答案 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()