pygame.mixer.Sound()语句提示错误:pygame.error: Unable to open file 'test.wav'

环境:Win10、python3.6.5、pygame( version 1.9.3)

在使用pygame创建一个wav文件时,代码如下:

import pygame
class Player:
    # constructor
    def __init__(self):
        pygame.mixer.pre_init(44100, -16, 1, 2048)
        pygame.init()


    # add a note
    def add(self, fileName):
        self.notes[fileName] = pygame.mixer.Sound(fileName)

在使用时提示如下错误:

pygame.error: Unable to open file 'test.wav'

查阅资料:

pygame.mixer.Sound
Create a new Sound object from a file or buffer object

Note: The buffer will be copied internally, no data will be shared between it and the Sound object.

可知,用法应该是没有过时的,并且是正确的。
那么问题出在哪呢?查一下错误提示,找到网页:

You cannot use pygames’ library’s unless you initialize either the modules your using or all of pygame.

这个说是没有初始化,但我的代码中将初始化放在__init__() 函数中了,不应该提示错误,然后还有的同学说是

It turned out that the frequency rate was too high for pygame, so I used one of the free tools to reduce the sampling rate (to smth like 128 bps) and it worked.

也就是说pygame支持不了那么高频的数据,然后我就将我的代码中的频率降为128,结果依然提示错误。说明问题还不在这。那么问题出在哪呢?
继续找,终于在这个网页(https://blog.csdn.net/ltime/article/details/72473138)上找到了。
原因是我用的公司的台式电脑,上面没有音频设备,硬件不支持,拿一个耳机连接上电脑,再次运行,成功,但是和网页上那位作者遇到的问题不一样的是我的错误始终提示的是

pygame.error: Unable to open file 'test.wav'

而那位作者提示的却是

pygame.error: DirectSoundCreate: No audio device found

这样的错误真是简单明了。

你可能感兴趣的:(python学习)