Python:使用Winsound在内存中播放WAV-SND_MEMORY

我正在尝试从内存而不是文件播放wav文件.这是我尝试过的方法,但是不起作用. with open(my/file/dir/sound.wav,rb) as f: data = f.read() data = base64.b64encode(data) data = data.decode...

我正在尝试从内存而不是文件播放wav文件.这是我尝试过的方法,但是不起作用.

>>> with open('my/file/dir/sound.wav','rb') as f:
>>>     data = f.read()
>>> data = base64.b64encode(data)
>>> data = data.decode('UTF-8')

因此,现在数据是一个字符串对象,表示音频wav文件的字节.

>>> winsound.PlaySound(data,winsound.SND_MEMORY)
Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
RuntimeError: Failed to play sound

请帮忙.我要去哪里错了?

编辑:没关系. It’s a bug.

解决方法:

据我了解,问题在于以下几行:

>>> data = data.decode('UTF-8')

使用base64.b64encode()进行编码时,应使用base64.b64decode()进行解码.

因此,代码可能是:

with open('my/file/dir/sound.wav','rb') as f:
    data = base64.b64encode(f.read())

winsound.PlaySound(base64.b64decode(data), winsound.SND_MEMORY)

我相信它可以解决问题.

本文标题为:Python:使用Winsound在内存中播放WAV-SND_MEMORY

基础教程推荐