pygame音频播放速度

Chr*_*s H 8 python pygame

快速的问题.

我在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()
Run Code Online (Sandbox Code Playgroud)

我有ggogle代码搜索了一些东西但是每个人似乎都很好用默认参数调用init函数.其他人可以尝试运行此脚本并查看它们是否获得相同的行为?有人知道如何加快速度吗?或者调整每个文件的速度?

谢谢.

Cha*_*ton 5

我有一些 mp3 音轨的播放速度变慢了。我使用诱变剂更新了基于 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()
Run Code Online (Sandbox Code Playgroud)

它解决了这个问题。


小智 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()
Run Code Online (Sandbox Code Playgroud)

请记住,如果您想更改frequency或使用的任何其他参数,pygame.mixer.init您必须先调用pygame.mixer.quitPygame 文档


Chr*_*s H 2

我想通了...有一个wave模块http://docs.python.org/library/wave.html,它可以读取wav文件的采样率。