Problema con archivos .mp3

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

Problema con archivos .mp3

Notapor Alex_13_estu » Sab Abr 12, 2008 1:07 pm

¡Hola! Mi consulta es breve, pero lleva comiéndome la cabeza un tiempo. Tengo un archivo .mp3 que quiero cargar con SDL_Mixer, pero por mucho que lo intento no soy capaz. El programa no da ningún erro del tipo "no existe el archivo" o "no se pudo cargar", si no que simplemente, cuando lo tiene que reproducir no lo hace. y sigue la ejecución, pero sin música, es como si no fuese capaz de entender el archivo. Sin embargo, un archivo de música en formato .mid sí que lo reproduce. He probado con distintos .mp3 y nada, por más que lo intento no hay forma. Y el código que uso para cargar un .mp3 es el mismo que para un .mid, los cargo en un Mix_Music* musica y los reproduzco y paro con las funciones típicas: Mix_PlayMusic(musica, -1), Mix_HalthMusic()... ¿Qué es lo que pasa? Espero que me podáis ayudar porque estoy algo desesperado y no le veo salida por ningún lado.

Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor lacabra25 » Sab Abr 12, 2008 5:11 pm

En el codigo que uses para reproducir la musica no se si habras puesto la musica a algun volumen o simplemente comienzas a reproducirla, si no le especificas ningun volumen prueba ha indicarle algun volumen despues de cargarla o despues de ponerla a reproducir, yo a la musica en un programa que hice le indique el volumen antes de ponerla a reproducir y me funciono, (aunque no se si funciona o tiene que funcionar sin indicarle un volumen pues nunca he puesto musica a reproducir sin indicarle volumen). Espero que sea algo del volumen y lo puedas solucionar.

Te pego el codigo que use yo por si te ayuda:
Código: Seleccionar todo
musica1 = Mix_LoadMUS(ARCHIVO_MUSICA1);
if(musica1 != NULL){
Mix_VolumeMusic(60);
Mix_FadeInMusic(musica1, 1, 500);
SDL_Delay(300);
}
else{
printf("ECM - No se pudo cargar el archivo de musica musica1.mp3\n");
}
Esta cuenta ahora a pasado a la cuenta jhg
Avatar de Usuario
lacabra25
 
Mensajes: 222
Registrado: Mié Abr 02, 2008 9:45 pm
Ubicación: Tenerife (España)

Notapor Alex_13_estu » Dom Abr 13, 2008 1:48 pm

¡Hola! Gracias por tu ayuda, pero no solucioné nada con lo del volumen... De todas formas graias. Os pongo un código que hice ahora para probar:

Código: Seleccionar todo
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>
using namespace std;

int main(int argc, char *argv[])
{
    SDL_Event event;
    Mix_Music *musica;
    SDL_Surface* pantalla;
    int done = 0;
   
    if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO) < 0)
    {
            cout << "No se puede iniciar SDL: " << SDL_GetError() << endl;
            return 1;
    }
   
    if(Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 1, 4096) < 0)
    {
            cout << "No se puede iniciar el audio: " << SDL_GetError() << endl;
            return 1;
    }
    pantalla = SDL_SetVideoMode(128, 128, 24, SDL_HWSURFACE|SDL_DOUBLEBUF);
    if(pantalla == NULL)
    {
            cout << "No se puede iniciar el modo de vídeo: " << SDL_GetError() << endl;
            return 1;
    }
   
    musica = Mix_LoadMUS("music.mp3");
    if(musica == NULL)
    {
            cout << "No se puede cargar el audio: " << SDL_GetError() << endl;
            return 1;
    }
    Mix_PlayMusic(musica, -1);
   
    while(done == 0)
    {
            while(SDL_PollEvent(&event))
            {
                if(event.type == SDL_QUIT)
                    done = 1;             
            }
    }
    Mix_HaltMusic();
   
    Mix_FreeMusic(musica);
    SDL_Quit();
    return 0;
}


Tengo un archivo que se llama "music.mp3" en el directorio del programa (o sea, que el archivo existe). y sin embargo, no me funciona el programa. PComo puse el mecanismo para comprobar si se podía cargar la música, obtuve en "stdout.txt" el siguiente testo:

No se puede cargar el audio: Module format not recognized


"Module format not recognized"... ¡Qué mala espina me da eso! ¿Alguien que tenga Windows lo puede probar a ver si le pasa lo mismo? ¿Alguien conoce alguna solución?

Muchas gracias. Un saludo.
Alex_13_estu
 
Mensajes: 75
Registrado: Jue Mar 27, 2008 5:22 pm

Notapor Dokan » Lun Abr 14, 2008 12:17 am

Pues no tengo mucha idea sobre el asunto, pero consultando aquí me ha llamado la atención esto:
this might be a critical error...

No se cuan crítico será.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

espero y te ayude esto

Notapor cypax » Sab Feb 28, 2009 10:52 pm

en mi opinion te puedo decir que yo tengo tu codigo y a mi me funciono añadiendole la ruta completa donde se encuentra el archivo music.mp3


modificale esto:
ejemplo.
musica = Mix_LoadMUS("C:/carpeta/music.mp3");

no lo reproduce por que no lo encuentra el programa,no te tira error por que es un error en tiempo de ejecucion del programa.

si quieres que te tire los errores mas estrictamente utiliza las funciones de sdl_error.

trata de indicarle la ruta completa donde se encuentra (music.mp3)

espero y te ayude....... :D
SI TE DUELE,HAY RECOMPENSA
cypax
 
Mensajes: 3
Registrado: Vie Feb 27, 2009 6:03 am

Notapor cypax » Sab Feb 28, 2009 11:23 pm

otro error que veo es este en donde especifiques los datos del audio a reproducir:
ejemplo:

tu codigo:
if(Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 1, 4096) < 0)

trata a cambiarle por esto:
if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2,4096) == -1)

ojo :shock:
checa la diferencia de lo dos codigos
:lol:

epero y te sirva a mi si me funciono

suerte :roll:
SI TE DUELE,HAY RECOMPENSA
cypax
 
Mensajes: 3
Registrado: Vie Feb 27, 2009 6:03 am

me pasaba lo mismo

Notapor carlostex » Mar Jul 14, 2009 5:03 pm

Hola, al principio me pasaba lo mismo no reproducia el mp3, estuve aciendo varias pruevas, y avia musica que si reproducioa y otra que no, lo que me llevo a la comclucion que tal ves sea el formato del archivo,no es mp3, no se si tengas una referencia de las variables que hacepta la funcion para iniciar el audio, mas especificamente el formato de audio, se refiere al tamaño de los datos, y llega hasta 16 bits, mi conclucion fue que si intentas reproducir un mp3 de 32 bits, no se va a poder. use un conversor de audio mp3, y converti una cancion que no reproduia, despues de convertirla, el programa la toco sin ni un problema
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron