当我使用pygame播放mp3时,它们播放得太快。
我当然环顾四周,发现了同样的问题here。但不幸的是,该解决方案没有用。我知道mp3的编码频率为16000 Hz,我使用了诱变剂对此进行了验证。但是指定频率无济于事,实际上更改频率并不会改变播放速度。
我还发现了this answer,它有效地建议了另一种初始化方法。但这对我也不起作用。
我以root身份运行python脚本,并使用USB声卡。我根据this answer编辑了alsa配置文件,将其设置为root的默认音频输出。然后,我正在使用此代码(或上述SO答案的变体):
pygame.mixer.init(frequency=16000)
pygame.mixer.music.load('myfile.mp3')
pygame.mixer.music.play()
即使我为频率使用不同的值,它也始终以两倍的速度播放。
~~~~~
这是更详细的代码:
import boto3
from io import StringIO
import json
import os.path
from contextlib import closing
from time import sleep
import pygame
pygame.mixer.pre_init(16000, -16, 2, 2048)
pygame.init()
#pygame.mixer.init(frequency=16000)
#pygame.mixer.quit()
#pygame.mixer.pre_init(16384, -16, 2, 1024*3)
#pygame.mixer.init()
def play_file(filename):
pygame.mixer.music.load(filename)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
sleep(0.1)
play_file('myfile.mp3')