python - 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')
解决方案
推荐阅读
- python - 使用循环将多个数据集保存到不同的变量
- asp.net - iTextSharp:HTML 到 PDF 更改字体
- python - 如何按给定顺序创建具有以下 2 个列表的元组
- c - 如何将文件中的字符串加载到C中的链接列表中?
- python - 将文件复制到新目标时,带有父文件夹名称的 Python 前缀文件名
- cloud - 如何在监控选项卡下编辑 Informatica 云中的状态设置
- asp.net-core - EF Core在发生异常时如何回滚先前的事务
- python-3.x - 如何让 Python 在我的 Raspberry Pi 上再次工作?
- dialogflow-es - 如何使用 Dialogflow CX API 向 webhook 传递参数? 似乎detectIntent() 设置会话queryParams 不起作用
- css - 通过 CSS 更改 ioslides 中的子弹类型