1

我有一些可在 Windows 中使用的 python 代码,代码如下:

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不是文件名,而是<type 'str'>包含未压缩的 PCM 数据(带有正确的 RIFF.WAV 标头)

如何使用pygame.mixer正确呈现数据?

4

1 回答 1

2

Sound需要一个文件名或类似文件的对象。您可以使用以下字符串从字符串创建后者StringIO

import cStringIO
...
sound = pygame.mixer.Sound(cStringIO.StringIO(a_sound))
于 2013-07-20T09:07:56.193 回答