2010-01-29 276 views
5

快速的問題。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() 

我有ggogle代碼搜索了一些東西,但似乎每個人都用它的默認參數調用init函數。其他人可以嘗試運行這個腳本,看看他們是否得到相同的行爲嗎?有人知道如何加快速度嗎?或者調整每個文件的速度?

謝謝。

回答

2

在免費的音頻工具如Audacity中打開您的音頻文件。它會告訴你媒體的採樣率。它也可以讓你轉換到不同的採樣率,所以你的聲音可以相同。

+0

但這是唯一的方法? – 2010-01-29 02:16:55

+0

不是必需的。我相信你可以找出一些方法來計算Python中輸入媒體的採樣率,然後適當地重新採樣媒體。這將允許您正確處理用戶提供的外部媒體。然而,pygame必須以一致的速度播放媒體,並且該速率必須與媒體本身的採樣速率相匹配。這個事實是沒有辦法的。 – Pace 2010-01-29 13:32:57

2

我有一些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() 

它解決了這一問題。

1

改善Chris H answer。以下是如何使用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() 

記住,如果你想改變frequencypygame.mixer.init使用的任何其他參數則必須調用pygame.mixer.quit第一。 Pygame documentation