pygame y reproducir MP3

Carles Pina i Estany carles en pina.cat
Mie Dic 3 19:21:29 CET 2008


Hola,

On Dec/03/2008, Arnau Sanchez wrote:
> Carles Pina i Estany escribió:
>
>> tengo datos muy curiosos, ahora:
>> carles en pinux:~/pygame$ python
>> Python 2.5.2 (r252:60911, Sep 29 2008, 21:15:13) [GCC 4.3.2] on linux2
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> import pygame
>>>>> pygame.mixer.init()
>> there is no soundcard
>>>>> pygame.mixer.init(44100)
>>>>> pygame.mixer.music.load("Qt4Dance.mp3")
>>>>> pygame.mixer.music.play()
>
>>>>
>>
>> Esto funciona! (bien!)
>>
>> (el hecho: si no pongo 44100 en el mixer.init desde el script no encuentra la
>> tarjeta de sonido (!!)  )
>>
>> Pero esto mismo en un fichero y ejecutado:
>> carles en pinux:~/pygame$ ./test.py there is no soundcard
>> carles en pinux:~/pygame$ 
>>
>> :-o
>>
>
> Primero, tienes razón en lo que dices en el otro correo, pygame ahora usa 
> ALSA (si no estoy equivocado antes iba con OSS)

bueno, antes todo iba con OSS :-D (depende del antes)

> He estado probado, y si no se indica la frecuencia de muestreo (y por 
> tanto va a 22050, el valor por defecto), se oyen clicks muy molestos en 
> el audio. Poniendo 44100 va bien. Mirando por internet hay mucha gente 
> que efectivamente usa este último valor, aunque es una pena que el valor 
> por defecto dé tantos problemas (a ti no te va, a mi me da clicks, etc).

Ojo ojo! Quizás te saltaste una parte interesante de mi correo. Desde el
script NO funcionaba y desde la consola de Python sí. Raro, no?

Hoy lo he encontrado. Tengo que llamar dos veces a pygame.mixer.init!:
#!/usr/bin/python

import pygame
import time

pygame.mixer.init(44100)
pygame.mixer.init(44100)
pygame.mixer.music.load("Qt4Dance.mp3")
pygame.mixer.music.play()
time.sleep(100)
print "adeu"

Esto funciona, pero si llamo una sola vez no funciona. Y si lo llamo sin
44100 funciona a 22050 y oigo los chasquidos.

> pre_init se usa para establecer los valores de configuración del 
> mezclador, pero  realmente no lo inicializa. Después, cuando hagas un 
> pygame.init, el mezclador se inicializará con los parámetros indicados en 
> el pre_init.

sí, lo ví después de enviar el mail.

Por tanto, en mi versión de Pygame y mis drivers necesito inicializarlo
dos veces... y a 22050 funciona con chasquidos.

Haré las pruebas que quería hacer ayer y quizás pruebo la versión -devel
de pygame y reporto el error si sigue allí.

1000 gracias,

-- 
Carles Pina i Estany		GPG id: 0x17756391
	http://pinux.info
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es