Ultimamente he estado trabajando bastante con GStreamer y JAVA, ya que estoy sumergido en un proyecto bastante ilusionante la verdad del que, poco a poco, iré comentando aquí.

Lo que voy a comentar en este post es algo que podemos obtener de la propia web de GStreamer en su documentación, y no es otra cosa que reproducir un archivo MP3, o cualquier otro soportado por GStreamer, desde JAVA.

A continuación dejo los enlaces a la wikipedia de GStreamer y JAVA, para orientar a algún perdido.

  • Gstreamer – http://es.wikipedia.org/wiki/GStreamer
  • Java – http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java

En la propia documentación de GStreamer se nos avisa de la potencia de este framework y que no es apropiado para “iniciados”, por lo que recomienda usar otros como Java Media Framework, aunque si os soy sincero, con un poco de ganas es fácil de utilizar. Personalmente, he tenido más problemas a la hora de utilizar Swing, que conectando con GStreamer y utilizar sus herramientas.

Lo primero que hay que tener en cuenta es que tanto GStreamer como JAVA son multiplataforma, por lo que lo aquí enseñado debería, ojo, DEBERÍA, ser válido tanto para Windows, Linux (en estos dos SOs es donde he realizado las pruebas) y MAC.

Como he dicho, el siguiente código su única función es la de reproducir un archivo MP3, y tiene la siguiente estructura.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void runEngine(File file) {
try {
//Obtengo la ruta absoluta del archivo a reproducir
path = file.getAbsolutePath();
 
//Arrancamos la librería GSTREAMER para rpeorducir el medio.
Gst.init();
 
//Creamos la tubería por donde circulará la información, 
//playbin es el medio que proporciona GStreamer para 
//controlar la reproducción
playbin = new PlayBin("AudioPlayer");
 
//Agregamos el archivo que queremos reproducir
playbin.setInputFile(new File(path));
playbin.setVideoSink(ElementFactory.make("fakesink", "videosink"));
 
//Cambiamos el estado a PLAYING y comenzamos la reproducción.
playbin.setState(State.PLAYING);
} catch (Throwable e) {
System.out.println("GStreamer no soportado: " + e.getLocalizedMessage());
}
}

Como podemos observar, la herramienta principal es el objeto llamado “playbin”, lo cual es un pipeline ya creado que nos permite controlar la reproducción del medio.

Y hasta aquí lo más simple de todo, a partir del playbin, podemos controlar toda la reproducción (pausar, detener, resumir, avanzar…) y obtener información (bitrate, tiempo de reproducción…), por lo que es una herramienta muy poderosa.

En los foros de GStreamer se hablar de una evolución de playbin llamada playbin2, lo cual, por lo que he llegado a leer está en versión BETA, y no he llegado a probarlo.

Más adelante hablaré de como reproducir archivos de video y otras cosillas bastante interesantes que se pueden hacer con GStreamer, además, de liberar al fin mi proyecto en el cual llevo trabajando desde comienzos de este año y me ha servidor para sacar un sobresaliente en la carrera 😀

2 Responses to “Reproducir MP3 con GStreamer y JAVA.”
  1. Rafa says:

    Hola amigo este post me parece muy interesante, yo la verdad soynuevo pero me toco tratar de consumir un audio que es publicado a nivel local desde una maquina con ubuntu. pero el reproductor que consuma este audio va a estar en un dispositivo iphone o ipad y sinceramente no tengo muy claro este concepto.
    estuve investigando y aparentemente necesito convertirlo o reenviar el audio por http live streamig de apple, pero sinceramente aun no se como poder realizarlo.
    me serviría que me proporcionaras algunos de tus conocimientos. gracias

  2. admin says:

    No sé qué lenguaje estás utilizando, por lo que voy a intentar orientarte un poco.

    En la web de GStreamer hay multitud de ejemplos para cada uno de los lenguajes. Para poder ‘hacer streaming’ necesitas un servidor RTSP, del cual hay ejemplos de implementación en la propia web, aunque depende del lenguaje. Por ejemplo, de python existe dicho ejemplo y es muy útil para empezar desde ahí, en JAVA no existe y hay que implementarlo desde cero.

    Por otra parte, puedes usar un servidor externo. Apple tiene el suyo propio, aunque nunca he trabajado con productos de apple, por lo que no sabría decirte si es obligatorio usarlo.

    Desconozco si GStreamer da soporte a apple. Otra alternativa a GStreamer es VLC, pero desconozco también si dan soporte a Apple.

    Como te he dicho, Apple tiene su propio servidor RTSP que es el que usa quicktime, pero como nunca he trabajado con productos de Apple, no te puedo ayudar mucho más.

    ¡Un saludo!

  3.  
Leave a Reply


   Beat diabetes   Diabetes diet