Foro de elhacker.net

Programación => Java => Mensaje iniciado por: cuervo en 8 Junio 2007, 20:30 pm



Título: reproducir mp3
Publicado por: cuervo en 8 Junio 2007, 20:30 pm
hola
pues el asunto es el siguiente estoy programando un juego muy sencillo y megustaria ponerle musica de fondo de unos de mis grupos pero el problema es que java solo manega midis alguien sabe de alguna clase de particulares o que se pa de algun tuto sobre el tema que me pudice informar se lo agradeceria mucho


Título: Re: reproducir mp3
Publicado por: Casidiablo en 8 Junio 2007, 20:38 pm
Cita de: javaHispano http://www.javahispano.org/news.item.action?id=1911876472
JavaZoom recientemente ha publicado un driver LGPL para MP3, que se une al ya existente Ogg Vorbis.

MP3 SPI (Service Provider Interface) es un driver "enchufable" al sistema JavaSound del J2SE.

JavaZoom es una web especializada en software multimedia open source, un terreno en donde, en mi opinrión, el mundo Java brilla bastante por su ausencia, pese a existir un estándar J2SE de audio y výdeo y una implementacrión open source de referencia de Sun: el Java Media Framework (JMF).

Sobre como incluir MP3 en Java hay un artículo en JavaWorld (http://www.javaworld.com/javaworld/jw-11-2000/jw-1103-mp3.html)

http://today.java.net/pub/n/MP3SPI1.9


Título: Re: reproducir mp3
Publicado por: cuervo en 9 Junio 2007, 05:33 am
gracias Casidiablo pero no habra otra forma aparte de esa y del jmf


Título: Re: reproducir mp3
Publicado por: cuervo en 10 Junio 2007, 05:22 am
hey Casidiablo con el MP3 SPI no viene nada de codigo o algo que
explique como es posible la reproduccion del mp3 por ejemplo el codigo que que uso para la musica del juego es este
Código:
import javax.sound.sampled.*;
import java.io.*;

public class SunTest extends Thread{

/*public static void main(String[] args){
SunTest p = new SunTest();
p.start();
}*/

public SunTest(){

}

public void run(){
testPlay("02_War Of The Universe.wav");
}





public void testPlay(String filename)
{
  try {
    File file = new File(filename);
    AudioInputStream in= AudioSystem.getAudioInputStream(file);
    AudioInputStream din = null;
    AudioFormat baseFormat = in.getFormat();
    AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
                                                                                  baseFormat.getSampleRate(),
                                                                                  16,
                                                                                  baseFormat.getChannels(),
                                                                                  baseFormat.getChannels() * 2,
                                                                                  baseFormat.getSampleRate(),
                                                                                  false);
    din = AudioSystem.getAudioInputStream(decodedFormat, in);
    // Play now.
    rawplay(decodedFormat, din);
    in.close();
  } catch (Exception e)
    {System.out.println("SSSSS");
    e.printStackTrace();
        //Handle exception.
    }
}

private void rawplay(AudioFormat targetFormat, AudioInputStream din) throws IOException,                                                                                                LineUnavailableException
{
System.out.println("SSSSS");
  byte[] data = new byte[4096];
  SourceDataLine line = getLine(targetFormat);
  if (line != null)
  {
    // Start
    line.start();
    int nBytesRead = 0, nBytesWritten = 0;
    while (nBytesRead != -1)
    {
        nBytesRead = din.read(data, 0, data.length);
        if (nBytesRead != -1) nBytesWritten = line.write(data, 0, nBytesRead);
    }
    // Stop
    line.drain();
    line.stop();
    line.close();
    din.close();
  }
}

private SourceDataLine getLine(AudioFormat audioFormat) throws LineUnavailableException
{
System.out.println("SSSSS");
  SourceDataLine res = null;
  DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
  res = (SourceDataLine) AudioSystem.getLine(info);
  res.open(audioFormat);
  return res;
}
}


simplemente reproduce el wav eso es lo que me interesa mas que nada el codigo de como se hace la reproducion no tienes alguna idea de como hacerlo o alguien.


Título: Re: reproducir mp3
Publicado por: Casidiablo en 12 Junio 2007, 16:57 pm
Se me ocurre que utilices un programa externo y utilizar las clases Procces Y Runtime para ejecutar comandos, por ejemplo si usas linux, puedes hacer lo siguiente para reproducir un mp3:

Código:
Process p = Runtime.getRuntime().exec("mpg123 archivo.mp3");

O algo así.

Saludos!!


Título: Re: reproducir mp3
Publicado por: marioly en 15 Junio 2007, 12:14 pm
Se me ocurre que utilices un programa externo y utilizar las clases Procces Y Runtime para ejecutar comandos, por ejemplo si usas linux, puedes hacer lo siguiente para reproducir un mp3:

Código:
Process p = Runtime.getRuntime().exec("mpg123 archivo.mp3");

O algo así.

Saludos!!
Eso no seria tan bueno :P , en Java no se usa tanto la llamada de esa forma a otros procesos por que:
1.- Resta portabilidad
2.- Hace dependiente tu codigo de otras aplicaciones
:P

Si quieres usar mp3 en Java puedes usar plugins, como :
http://java.sun.com/products/java-media/jmf/mp3/download.html

saludos :)


Título: Re: reproducir mp3
Publicado por: Casidiablo en 15 Junio 2007, 16:17 pm
gracias Casidiablo pero no habra otra forma aparte de esa y del jmf


Título: Re: reproducir mp3
Publicado por: marioly en 15 Junio 2007, 17:59 pm
Pero por que lo a preguntado asi? , por que no encontraba codes de ejemplo.., por que no lo puede correr :P , hubiera sido mejor poner un ejemplo  :-X . El exec de tu post no correra la musica de fondo (que es el asunto del post), llamara a otra aplicacion que corra el mp3 lo que no es muy bueno..


Título: Re: reproducir mp3
Publicado por: Casidiablo en 15 Junio 2007, 21:37 pm
Pero por que lo a preguntado asi? , por que no encontraba codes de ejemplo.., por que no lo puede correr :P , hubiera sido mejor poner un ejemplo  :-X . El exec de tu post no correra la musica de fondo (que es el asunto del post), llamara a otra aplicacion que corra el mp3 lo que no es muy bueno..

Exacto! Y mas aun utiliza un programa externo por lo que, como dices, el programa dejaría de ser portable. No hay duda de que es mejor hacerlo con JMF, como se había citado al principio del post.

Saludos :-*


Título: Re: reproducir mp3
Publicado por: cuervo en 22 Junio 2007, 11:10 am
gracias a todos perdon por las tardanza en contestar pero estado ucupado con  la escuela por ahora estoy estudiando el codigo del
aTunes es muy interesante aunque me esta costando trabajo.
bueno gracias


Título: Re: reproducir mp3
Publicado por: egyware en 16 Agosto 2007, 01:08 am
disculpa casidiablo pero el MP3spi no funciona si no tienes javaSound 1.1 o superior algo importate que uno debe tener todos las librerias necesarias porsi las moscas falta una en el lugar de ejecucion como lo que me paso ami no puedo reproducir mp3 ni con jmf y con mp3spi  >:(


Título: Re: reproducir mp3
Publicado por: Casidiablo en 17 Agosto 2007, 17:07 pm
Gracias por la aclaración :)


Título: Re: reproducir mp3
Publicado por: egyware en 22 Agosto 2007, 22:22 pm
hay una libreria muy buena se llama JLayer de javazoom uno le da un InputStream(debe de ser de un archivo mp3) y lo reproduce no tiene muchos metodos pero se escuha bien, eso si hay que poner play en un nuevo thread, requiere JSound 1.1 y un ser humano compatible con java :P
segun la pagina de donde lo descargé(no me acuerdo) ocupa aproz. 8 a 10 MB de ram y 1 a 2 % de cpu