elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  sdl_mixer no reproduce mp3
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: sdl_mixer no reproduce mp3  (Leído 6,678 veces)
Guillermo575

Desconectado Desconectado

Mensajes: 17


Ver Perfil
sdl_mixer no reproduce mp3
« en: 29 Marzo 2011, 05:49 am »

Hola, escribo por un problema que tengo con la libreria sdl:
Segun lei en internet el sdl_mixer es capaz de reproducir desde midi a mp3, el problema es que cuando reproduzco midi me funciona, pero cuando intento reproducir un archivo mp3 no me lo reproduce y me tira error.
El codigo es este:
Cita de: Guillermo575
#include <stdio.h>
#include <stdlib.h>;
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>

int main(int argc, char *argv[])
{
   SDL_Surface *screen;
   Mix_Music *cancion;
   SDL_Event event;
   int salir = 0;
   
   screen = SDL_SetVideoMode(320, 240, 16, SDL_HWSURFACE);


   if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) == -1)
   {
      printf("Error en Mix_OpenAudio: %s\n", Mix_GetError());
      return 1;
   }

   cancion = Mix_LoadMUS("music.mid");

   if (!cancion)
      printf("Error en Mix_LoadMUS: %s\n", Mix_GetError());

   if (cancion)
   {
      if (Mix_PlayMusic(cancion, -1) == -1)
         printf("Error en Mix_PlayMusic: %s\n", Mix_GetError());
   }

   while (! salir)
   {
      SDL_PollEvent(&event);

      if (event.type == SDL_QUIT)
         salir = 1;

      SDL_Flip(screen);
      SDL_Delay(10);
   }

   if (cancion)
   {
      Mix_HaltMusic();
      Mix_FreeMusic(cancion);
   }

   Mix_CloseAudio();
   SDL_Quit();
   return 0;
}

Lo unico que hace es abrir una ventana y reproducir la cancion que esta dentro de la carpeta
En donde dice
   cancion = Mix_LoadMUS("music.mid");
remplacen "music.mid" con el nombre de algun midi que tengan y luego con un mp3
¿les paso lo mismo u otra cosa?
Saludos


En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: sdl_mixer no reproduce mp3
« Respuesta #1 en: 29 Marzo 2011, 11:02 am »

Mix_LoadMP3("music.mp3"); prueba  a ver si  funciona.

EDITO: No funciona creo...

Citar
SDL_Mixer se encarga de reservar un canal exclusivo para la reproducción de música para nuestra aplicación. Como en la gestión de sonidos da soporte a multitud de formatos. Como ocurría con los chunks, la música tiene que ser cargada de un fichero y una vez que terminemos de trabajar con ella deberemos de liberar el recurso. Para cargar la música del videojuego utilizamos la función:
 Mix_Music *Mix_LoadMUS(const char *file);
 
Esta función recibe como parámetro el fichero donde se encuentra la música que queremos cargar. La función devuelve un puntero a la estructura de datos que guarda la música del videojuego de tipo Mix_Music. La única diferencia con la función de cargar sonidos "convencionales es que no tenemos que espeficiar el canal en el que queremos colocar el sonido. Como puedes observar existe un tipo exclusivo de datos dedicado a este tipo de sonidos. Como pasa con otros tipos de datos la definición de Mix_Music está oculta al usuario, lo que no nos supone ningún problema ya que trabajaremos siempre con un puntero a esa estructura y alterando los campos de la misma directamente.

Si ocurre algún error al cargar el fichero de música la función devuelve el valor NULL. El tipo de formato que podemos reproducir es muy amplio como comentabamos al principo del capítulo. Entre ellos se encuentran el MP3, MOD, WAV... y otros.
 
Como comentamos hace unas líneas cuando no necesitemos tener la música disponible en memoria principal deberemos liberar ésta para realizar una buena gestión de nuestros recursos. La función que permite realizar esta tarea es:
 void Mix_FreeMusic(Mix_Music);
 
Esta función recibe como parámetro el puntero devuelto al cargar el fichero de música y como ya hemos dicho libera los recursos ocupados por ella.


« Última modificación: 29 Marzo 2011, 11:48 am por Xafi » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Guillermo575

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: sdl_mixer no reproduce mp3
« Respuesta #2 en: 29 Marzo 2011, 17:54 pm »

Mix_LoadMP3("music.mp3"); prueba  a ver si  funciona.

EDITO: No funciona creo...
 

ya lo probe y tienes razon no funciona...
Y en cuanto a lo de liberar la variable que contiene el archivo que tiene si los tenia pero los borre en esta ocasion para que no abarcara tanto espacio para publicarlas
¿No hay alguna libreria tanto en sdl o en otra que me permita reproducir mp3?
Saludos
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: sdl_mixer no reproduce mp3
« Respuesta #3 en: 29 Marzo 2011, 18:05 pm »

Podrías poner el código que debería de funcionar en teoría para el .mp3.
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Guillermo575

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: sdl_mixer no reproduce mp3
« Respuesta #4 en: 29 Marzo 2011, 18:18 pm »

¿ya probaste el codigo?  es que no se si sea el ide o algun elemento ajeno al codigo
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: sdl_mixer no reproduce mp3
« Respuesta #5 en: 29 Marzo 2011, 23:06 pm »

el código que tienes puesto es para cargar una extensión .mid quizás tendrías que poner .mp3
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Guillermo575

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: sdl_mixer no reproduce mp3
« Respuesta #6 en: 30 Marzo 2011, 01:12 am »

el código que tienes puesto es para cargar una extensión .mid quizás tendrías que poner .mp3
Eso era lo que queria decir, si cambias el nombre del archivo y lo cambias por el de un archivo mp3 (con todo y extension) no sonara nada
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: sdl_mixer no reproduce mp3
« Respuesta #7 en: 30 Marzo 2011, 11:20 am »

Tendría que ser cancion = Mix_LoadMUS("music.mp3"); prueba otra canción  a ver si va pero entonces no sé que puede ser.
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Guillermo575

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: sdl_mixer no reproduce mp3
« Respuesta #8 en: 30 Marzo 2011, 17:48 pm »

oye,¿ sabes para que sirve esta linea de codigo?:
Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)

vi en internet que sugeria cambiarle  los parametros pero no se para que sirve
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: sdl_mixer no reproduce mp3
« Respuesta #9 en: 31 Marzo 2011, 10:19 am »

Según el tutorial:

Citar
Inicializando la librería
 
Para poder utilizar esta librería el subsistema de audio debe estar inicializado. Para ello se utiliza la bandera SDL_INIT_AUDIO en la función SDL_Init(). Una vez inicializado este subsistema debemos de iniciar la librería como en las demás librerías adicionales. Las funciones de SDL_mixer tienen en común que comienzan por Mix_ por lo que son fácilmente diferenciables de las nativas de SDL.
 
Para inicializar librería llamaremos a la función:
int Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize);
 
En las nuevas versiones de SDL esta función se encarga también de abrir el dispositivo de audio por lo que no tenemos que inicializarlo previamente. Esta es la primera función de SDL_mixer a la que debemos llamar en nuestra aplicación. El primer parámetro que recibe la función es la frecuencia en hertzios (Hz) que queremos reproducir el sample. Los valores habituales para este parámetro los vimos estudiando el subsistema de audio de SDL. Ponemos aquí un recordatorio:
 11025: Calidad telefónica.
22050: Calidad de radio. Es el máximo que permite recibir el oido humano.
44100: Calidad CD.

Como recordarás son valores idénticos a los utilizados en el subsistema de audio de SDL para el manejo del sonido. El campo format especifica los bits y el tipo del sample. Los posibles valores que puede tomar este campo son:
 AUDIO_U8: Sample de 8 bits sin signo.
AUDIO_S8: Sample de 8 bits con signo.
AUDIO_U16 o AUDIO_U16LSB: Sample de 16 bits sin signo en formato little-endian.
AUDIO_S16 o AUDIO_S16LSB: Sample de 16 bits sin signo en formato little-endian.
AUDIO_16MSB: Sample de 16 bits sin signo en formato big-endian.
AUDIO_U16SYS: Dependiendo del diseño de nuestro sistema será AUDIO_U16LSB si es litle-endian o AUDIO_U16MSB si el sistema es big-endian.
 AUDIO_S16SYS: Dependiendo del diseño de nuestro sistema será AUDIO_S16LSB si es litle-endian o AUDIO_S16MSB si el sistema es big-endian.
 
Como en el parámetro anterior los valores son los mismos que puede tomar dicho parámetro en las funciones que manejan el sonido nativamente en SDL. En el parámetro channels indicamos en el número de canales que queremos trabajar, 1 para mono, 2 para estéreo. El último de los parámetros, chunksize, es el tamaño de chunk que queremos especificar en nuestra aplicación. La documentación aconseja usar un valor de 4096.
 
Esta función de inicialización realiza las mismas tareas que la función SDL_OpenAudioSpec que estudiamos en el manejo nativo del sonido por parte de SDL. Existen varias constantes que podemos utilizar al definir el formato y la frecuencia que queremos utilizar si no somos unos expertos. MIX_DEFAULT_FREQUENCY es el valor por defecto a utilizar cuando hablamos de frecuencia, esta constate contiene el valor 22050. El formato por defecto viene dado por MIX_DEFAULT_FORMAT que es equivalente a AUDIO_S16SYS. La última de las constantes es MIX_DEFAULT_CHANNELS que especifica el número de canales por defecto y que equivale a establecer dos canales.
 
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
no reproduce AVI
Multimedia
nachuss 1 1,566 Último mensaje 6 Junio 2004, 19:05 pm
por Songoku
No reproduce DVD's ???
Multimedia
Makoto 2 1,534 Último mensaje 5 Julio 2005, 19:39 pm
por Songoku
[ERROR]Carga de MP3 en SDL_mixer
Programación C/C++
RyogiShiki 0 1,975 Último mensaje 3 Mayo 2011, 19:26 pm
por RyogiShiki
VLC no reproduce archivos wma...
GNU/Linux
FranKlr 7 3,226 Último mensaje 2 Diciembre 2014, 05:19 am
por MinusFour
Javaweb Reproduce musica
Java
Sapote 5 3,112 Último mensaje 13 Mayo 2017, 03:25 am
por Sapote
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines