我有一些python代码可以在Windows中使用以下代码:
winsound.PlaySound(a_sound, winsound.SND_MEMORY)
当然,在linux中这不起作用。我尝试了以下内容(使用http://www.pygame.org/docs/ref/mixer.html中的文档作为指导):
import pygame
pygame.init()
sound = pygame.mixer.Sound(a_sound)
clock = pygame.time.Clock()
sound.play()
while pygame.mixer.get_busy():
clock.tick(30)
但我明白了:
TypeError: must be string without null bytes, not str
a_sound
不是文件的名称,而是包含未压缩的PCM数据的<type 'str'>
(具有正确的RIFF.WAV标头)
如何使用pygame.mixer
正确呈现数据?
答案 0 :(得分:2)
Sound
需要文件名或类文件对象。您可以使用StringIO
:
import cStringIO
...
sound = pygame.mixer.Sound(cStringIO.StringIO(a_sound))