首页 > 解决方案 > Pygame音频频率说明符不起作用

问题描述

当我使用 pygame 播放 mp3 时,它们播放得太快了。

当然,我环顾四周,在这里发现了同样的问题。但不幸的是,解决方案没有奏效。我知道 mp3 以 16000 Hz 编码,我使用诱变剂验证了这一点。但是指定频率并没有帮助,实际上改变频率并没有改变播放速度

我还找到了这个答案,它有效地建议了一种不同的初始化方法。但这对我也不起作用。

我正在以 root 身份运行 python 脚本,并使用 USB 声卡。我根据这个答案编辑了我的 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')

标签: pythonaudiopygame

解决方案


推荐阅读