Se propone la siguiente situación. En una casa generalemente se cuenta de un sistema de multimedia (home theater, equipo de música, etc) y para poder reproducir contenidos multimedias solo es posible mediante las entredas de éste (CD/DVD, HDMI, AUX, conector RCA, etc). Esto obliga a que todo dispositivo del cual una persona quiera reproducir un contenido multimedia deba hacerlo fisicamente muy cerca del sistema multimedia. JStreamer soluciona la dependencia de cercanía física con el sistema multimedia dado que transmite de forma inalámbrica el contenido multimedia.
La solución a nuestro problema contempla que cada sistema multimedia sea conectado a un ordenador de placa reducida de bajo costo (Ej: Raspberry pi), en el cual corra algún sistema operativo como linux que sea capaz de poder correr programas multimedia que para este caso son vlc, gstreamer y la máquina virtual de JAVA. Desde algún otro dispositivo se debe correr un programa el cual realize un streaming mediante internet al sistema multimedia de los datos que se quieren reproducir.
Palabras Claves:
Como se aprecia en la figura de arriba, el sistema funciona en base a dos conexiones. La primera permite el envío de datos de control desde el cliente hacia el servidor y viceversa. Esta conexión se realiza siempre bajo el protocolo TCP/IP. Entre los parametros de control importantes se encuentran, el tipo de dato a enviar (audio o video) y el puerto UDP de escucha que se envía desde el Servidor al Cliente.
La segunda conexión la realizan los programas encargados de realizar el streaming que en este caso son VLC para archivos de video y GStreamer para archivos de audio. Para el caso de archivos de audio, la conexión se realiza por medio del protocolo TCP/IP para no perder fidelidad. En cambio los archivos de video son enviados por UDP/IP.
Además, cabe destacar que tanto el cliente como el servidor realizan un fork/exec de los programas ocuapados para realizar streaming.
Toda la programación de este sistema fué realizada bajo JAVA, debido a la facilidad de programación de interfaces gráficas, manejo de procesos e hilos y uso de socket. Además el sistema no es tan complejo, por lo tanto, el uso de un lenguaje de alto nivel es bastante aceptable.
En este punto se realiza la elección de tipo de archivo a realizar streaming, además de configurar la dirección IP del servidor y el puerto de escucha de la conexión de configuración.
Al presionar el boton next en la ventana descrita anteriormente, se realiza la conexión de control con el servidor. Acá el cliente le envía el tipo de dato al cual se realizará streaming (Audio o video). El servidor envía devuelta el puerto en que él escuchara por la conexión de streaming.
Al presionar el botón "open" se desplega una ventana en la cual se puede escoger el archivo multimedia a realizar streaming.
Al presionar el boton "Start" el programa hace un "fork y exec" para ejecutar el proceso VLC o GStreamer.
El servidor inicia un socket TCP y se queda a la escucha de alguna conexión. Cuando el cliente se conecta, este recibe el tipo de dato a recibir streaming. Además este envía al cliente el puerto donde escuchará los datos de streaming. Luego de esto el servidor crea el proceso correspondiete (VLC o GStreamer) para la reproducción de los datos.