我试图在pygame中从缓冲区播放声音。以下代码正确播放一次声音,但结果为TypeError: must be string without null bytes, not str
。
f = open('sound.wav', 'rb')
data = f.read()
buffer = data[44:len(data)] # start after header
pygame.mixer.Sound(buffer).play()
因为在声音正确播放一次后发生错误,我怀疑play()
期望buffer
更长。
答案 0 :(得分:1)
我认为您使用python
内置函数buffer
作为变量
这是关于buffer的python文档。
我能够复制您的错误TypeError: must be string without null bytes, not str
当缓冲区用于赋值而不是变量时,修改后的代码不会出错。
import pygame
pygame.mixer.init()
f = open('sound.wav', 'rb')
data = f.read()
#buffer = data[44:len(data)] # start after header
myBuffer = buffer(data , 44,len(data))
pygame.mixer.Sound(myBuffer).play()