使用pygame从缓冲区播放声音

时间:2016-03-29 20:39:33

标签: python audio pygame buffer playback

我试图在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更长。

1 个答案:

答案 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()