pygame音频播放速度

9 投票
5 回答
19351 浏览
提问于 2025-04-15 18:37

我有个简单的问题。

我在Linux上用pygame来播放一些音频文件。我有一些.wav格式的文件,但在播放的时候速度不对。

import pygame.mixer, sys, time

#plays too fast
pygame.mixer.init(44100)
pygame.mixer.music.load(sys.argv[1])
pygame.mixer.music.play()
time.sleep(5)
pygame.mixer.quit()

#plays too slow
pygame.mixer.init(22100)
pygame.mixer.music.load(sys.argv[1])
pygame.mixer.music.play()
time.sleep(5)
pygame.mixer.quit()

我在网上查了一些代码,但大家似乎都能正常使用默认参数来调用初始化函数。有没有其他人试过运行这个脚本,看看他们的表现是否一样?有没有人知道怎么加快播放速度?或者怎么为每个文件调整速度?

谢谢。

5 个回答

5

为了更好地理解Chris H 的回答,这里有一个关于如何使用 wave 库的例子。

import wave
import pygame

file_path = '/path/to/sound.wav'
file_wav = wave.open(file_path)
frequency = file_wav.getframerate()
pygame.mixer.init(frequency=frequency)
pygame.mixer.music.load(file_path)
pygame.mixer.music.play()

记住,如果你想要改变 frequency 或者在 pygame.mixer.init 中使用的其他参数,你必须先调用 pygame.mixer.quit。可以查看Pygame 的文档了解更多信息。

5

我有一些mp3音频文件播放的时候速度变慢了。我用一个叫做mutagen的工具,更新了混音器的频率,让它根据mp3的采样率来调整,代码是这样的:

import pygame, mutagen.mp3

song_file = "your_music.mp3"

mp3 = mutagen.mp3.MP3(song_file)
pygame.mixer.init(frequency=mp3.info.sample_rate)

pygame.mixer.music.load(song_file)
pygame.mixer.music.play()

这样做之后,问题就解决了。

2

我搞明白了……有一个叫做波形模块的东西,你可以在这里找到它的介绍,它可以读取wav文件的采样率。

撰写回答