PyGame播放声音有很大的延迟

时间:2012-11-13 07:07:13

标签: audio pygame

我正在玩建立一个像鼓机一样播放节奏的蟒蛇脚本。我用过PyGame来处理音频。但是,我在呼叫播放和听到实际音频之间遇到了重大/不可接受的延迟。

我将以下代码粘贴到交互式解释器中,然后一次又一次地执行最后一行:

import pygame
pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096)
s = pygame.mixer.Sound('snare.wav')
s.play(loops=0, maxtime=0, fade_ms=0)

按下输入和听到音频之间的时间是我最好的猜测大约400毫秒,确实明显和不可接受。延迟与我单击VLC中的播放按钮并等待播放音频的情况大致相同。

我在Windows和Ubuntu上都试过这个结果。我的电脑有点旧,英特尔酷睿i3,2.53GHz,但我认为这应该不是问题。

我该怎么办?

循环播放:

此代码演示了相同的延迟。

for i in range(10):
  print i
  s.play(loops=0, maxtime=0, fade_ms=0)
  sleep(2)

2 个答案:

答案 0 :(得分:8)

一种可能的解决方案是减小缓冲区大小(例子512):

import pygame
pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=512)
s = pygame.mixer.Sound('snare.wav')
s.play(loops=0, maxtime=0, fade_ms=0)

答案 1 :(得分:1)

几分钟前我遇到了同样的问题,并且This other thread

有一个适合我的解决方案

它看起来像一个初始化问题,如果你首先启动pygame(或者XD),pygame不能很好地获得缓冲区。首先初始化混合器init()和pre_init(),然后从那里进行实验:

pygame.mixer.pre_init(44100, -16, 2, 512)
pygame.mixer.init()
pygame.init()

那应该有效:)祝你好运!