2010-01-29 33 views
5

pregunta rápida.pygame velocidad de reproducción de audio

Estoy ejecutando pygame en Linux solo para reproducir algunos archivos de audio. Tengo algunos archivos .wav y estoy teniendo problemas para reproducirlos a la velocidad correcta.

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

he buscado código ggogle algunas cosas pero todo el mundo parece estar bien llamar a la función init con sus parámetros por defecto. ¿Pueden otros intentar ejecutar este script y ver si obtienen el mismo comportamiento o no? ¿Alguien sabe cómo acelerarlo? ¿O ajustar la velocidad para cada archivo?

Gracias.

Respuesta

2

Abra su archivo de audio en una herramienta de audio gratuita como Audacity. Le indicará la frecuencia de muestreo de sus medios. También le permitirá convertir a una velocidad de muestreo diferente para que todos sus sonidos puedan ser iguales.

+0

pero ¿es ésa la única manera? –

+0

No necesariamente. Estoy seguro de que podría encontrar la forma de calcular la frecuencia de muestreo de los medios de entrada en Python y luego volver a muestrear los medios de forma adecuada. Esto le permitiría manejar medios extranjeros suministrados por sus usuarios correctamente. Sin embargo, pygame debe reproducir medios a una velocidad constante y esa velocidad debe coincidir con la tasa de muestreo de los medios en sí. No hay forma de evitar ese hecho. – Pace

2

Tenía algunas pistas de reproducción de audio mp3 ralentizadas. He actualizado la frecuencia mezclador de estar basada en la frecuencia de muestreo de MP3 usando mutagen así:

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

Y lo arreglen el problema.

1

Para mejorar Chris H answer. Aquí hay un ejemplo de cómo usar la biblioteca 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() 

Recuerde que si desea cambiar frequency o cualquier otro parámetro utilizado en pygame.mixer.init debe llamar primero pygame.mixer.quit. Pygame documentation

Cuestiones relacionadas