Inicio > Java > Reproducir Formatos *.MP3 + Java Media FrameWork (JMF) En Ubuntu

Reproducir Formatos *.MP3 + Java Media FrameWork (JMF) En Ubuntu

Hace unos dias atrás instalé el Java Media FrameWork pensando que podria reproducir mp3s con el, pero tal fue mi sorpresa que el JMF por si solo no podia hacerlo XD . Al intentar reproducir mp3s me tiraba un error mas o menos asi

Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 24000.0 frame rate, FrameSize=32768 bits
Failed to realize: com.sun.media.PlaybackEngine@18e80a6
Error: Unable to realize com.sun.media.PlaybackEngine@18e80a6

Buscando una solucion encontre que tenia que descargar aparte un plugin para reproducir los mp3s ( para los interesados el plugin se llama JavaMP3plugin.zip ).

A pesar que segui todas las indicaciones para instalar ese plugin no sirvio de nada por lo que me puse a buscar por otra parte alguna solucion… y encontre esta libreria que trae los codec para poder reproducir mp3s con JMF, Su nombre es jffmpeg, Aqui pueden ver los Formatos Soportados por esta libreria. La forma de uso es muy sencilla solo descargan la ultima version del archivo jffmpeg.jar y lo agregan a su proyecto junto con el jmf.jar (Ir a este post para instar el Java Media FrameWork JMF).

Aqui tengo un ejemplo de su uso:

Paso 1

Agregan las librerias a su proyecto , Click derecho en Libraries / Add Library

Luego hacen click en Manager Libraries


Ahora Click en New Library…

Ponemos algun Nombre, yo le puse JMF

Agregamos el jmf.jar y jffmpeg.jar clickeando en Add JAR/Folder y luego clickeamos OK

Por ultimo seleccionamos nuestra libreria JMF y presionamos Add Library

Ya tenemos las librerias necesarias para reproducir los mp3s ahora vamos al codigo.
Para eso hice esta simple aplicacion de consola para que vean el funcionamiento.

Clase Main.java

package mp3player;
/**
*
* @author Esteban Fuentealba
*/
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
/* Importamos Las clases del Package Media */
import javax.media.*;
/* Tambien necesitamos importar AudioFormat del package javax.media.format para poder agregar los codecs */
import javax.media.format.AudioFormat;

public class Main {

public static void main(String[] args) {
if (args.length > 0) {
try {
/* Esta es la direccion del codec que decodifica los mp3 */
String jffmpegAudioDecoder = "net.sourceforge.jffmpeg.AudioDecoder";
/* Cargamos el codec y lo guardamos en un objeto de tipo Codec */
Codec codecAudio = (Codec) Class.forName(jffmpegAudioDecoder).newInstance();
/* Agregamos los codec al PlugInManager */
PlugInManager.addPlugIn(jffmpegAudioDecoder,
codecAudio.getSupportedInputFormats(),
new Format[]{new AudioFormat("LINEAR")},
PlugInManager.CODEC);
/* Y ahora podemos crear un objeto Player que es del JMF */
Player miPlayer = Manager.createPlayer(new URL(args[0].toString()));
/* Le ponemos Play a nuestro archivo cargado  */
miPlayer.start();
} catch (NoPlayerException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (MalformedURLException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
System.out.println("ERROR: Debes pasar como parametro la direccion de un archivo mp3");
}
}
}

Modo de Uso:
Crean el Jar y desde la terminal hacen lo siguiente

java -jar  

Ejemplo:

java -jar /home/esteban/NetBeansProjects/Mp3Player/dist/Mp3Player.jar http://s3.amazonaws.com/projectionist/sin-documentos.mp3

Codigo Fuente
mp3playertar:

Espero que sirva…

Saludos!

  1. Alfredo Ramos
    abril 19, 2009 a las 10:27 pm

    hola, no sabes si tambien hay que agregar los demultiplexers? y de ser asi, sabes como agregarlos?saludos

  2. rvp
    enero 18, 2012 a las 10:58 am

    ¿supongo eso no sirve para leer un stream, has usado rstp para eso?

  3. septiembre 9, 2012 a las 4:48 am

    Genial! Funciona perfecto, Lo único que ahora solo me reproduce mp3, el ogg se la pela, pero bueno! ya lo arreglaré jeje

  4. Jcreator
    diciembre 13, 2012 a las 6:24 pm

    ayuda..me aparece un error…en esta linea——19 if (args.length > 0) {

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: