python - 使用pygame从缓冲区播放声音

标签 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更长。

最佳答案

我认为您使用内置在函数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()

关于python - 使用pygame从缓冲区播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36294658/

相关文章:

python - 我们如何将 C 结构传递给 Python?

java - 分割音频信号

python - 行走动画速度

python - 是否可以使键盘模块与 pygame 和线程一起使用

python - 根据日期连接两个 DataFrame

python - 使用脚本监听 tcpdump 输出 pcaps

Java - 检测应用程序是否输出声音

python - Pygame - 防止 Sprite 重叠

python - Numpy,为什么 `x += y` 产生的结果与 `x = x + y` 不同?

iPhone音频播放: force through internal speaker?