2010-01-29 17 views
5

szybkie pytanie.prędkość odtwarzania dźwięku pygame

Używam pygame pod linuxem tylko po to, aby odtwarzać pliki audio. Mam kilka plików .wav i mam problemy z odtwarzaniem ich z odpowiednią prędkością.

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() 

Mam kod ggogle przeszukany pewne rzeczy, ale każdy wydaje się być w porządku wywoływanie funkcji init z domyślnymi parametrami. Czy inni mogą spróbować uruchomić ten skrypt i zobaczyć, czy mają takie samo zachowanie, czy nie? Czy ktoś wie jak to przyspieszyć? Lub dostosować prędkość dla każdego pliku?

Dzięki.

Odpowiedz

2

Otwórz plik audio w bezpłatnym narzędziu audio, takim jak Audacity. Pokaże Ci częstotliwość próbkowania twoich mediów. Pozwoli to również na konwersję na inną częstotliwość próbkowania, dzięki czemu wszystkie twoje dźwięki będą takie same.

+0

ale czy to jedyny sposób? –

+0

Niezbędne. Na pewno można znaleźć sposób na obliczenie częstotliwości próbkowania nośnika wejściowego w Pythonie, a następnie odpowiednio zmienić próbę nośnika. Umożliwi to prawidłowe obsługiwanie zagranicznych mediów dostarczanych przez twoich użytkowników. Jednak pygame musi odtwarzać multimedia w stałym tempie, a ta szybkość musi odpowiadać częstotliwości próbkowania samego nośnika. Nie ma możliwości obejścia tego faktu. – Pace

2

Miałem trochę odtwarzanych ścieżek audio mp3 spowolnione. I aktualizowany częstotliwość miksera należy w oparciu o częstotliwość próbkowania MP3 przy użyciu mutagen tak:

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() 

I to problem został rozwiązany.

1

Aby poprawić Chris H answer. Oto przykład, jak korzystać z biblioteki 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() 

Pamiętaj, że jeśli chcesz zmienić frequency lub inny parametr stosowany w pygame.mixer.init należy zadzwonić pygame.mixer.quit pierwszy. Pygame documentation

Powiązane problemy