2013-05-10 95 views
0

我可以播放音乐,但当它循环播放时,如果它是.ogg文件,总会有明显的裂纹噪声。当.mp3或.wav循环时,不会发生crack啪声或咔嗒声,只有.ogg文件。pygame.mixer.music;播放ogg文件时的音乐crack啪声

如果我使用Audacity将.ogg文件转换为.mp3,则循环时不会出现裂纹噪音。我试过寻找这个答案,但没有发现我的作品。

import pygame, sys, pygame.mixer 
from pygame.locals import * 


WHITE = (255, 255, 255) 

pygame.mixer.pre_init(44100, -16, 2, 2048) 
pygame.init() 
DISPLAYSURF = pygame.display.set_mode((300,400)) 

pygame.mixer.music.load('data/Acrostics.ogg') 
pygame.mixer.music.play(-1) 

while True: 
    DISPLAYSURF.fill(WHITE) 

    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
    pygame.display.update() 
+0

也许是流与'pygame.mixer.music'的OGG文件的问题。你有没有尝试过使用'pygame.mixer.Sound'让OGG在玩之前完全加载? – Haz 2013-05-10 20:51:38

+0

另外,如果可能您是否尝试将MP3转换为OGG?从我读过的内容来看,OGG不会使用低通滤波,而MP3可以,所以有时将OGG文件转换为MP3可以消除弹出或crack啪声。 – Haz 2013-05-10 20:57:31

回答

1

之前pygame.init()

尝试pygame.mixer.pre_init(44100, -16, 2, 1024)

或者你也可以代之以:pygame.mixer.pre_init(44100, -16, 2, 4096)

+0

@哈兹我已经尝试将MP3转换为ogg,并且破解仍然存在。关于猴子的建议,我也尝试过1024和4096作为缓冲区大小,但都没有成功。 将ogg转换为mp3并再次转换回ogg可消除裂纹噪声,但在再次循环之前会出现非常短暂的爆音。 – lotus 2013-05-11 18:41:35