PROYECTO FINAL DE CARRERA

Autor: Joaquín Gutiérrez Gil

Ingeniería Técnica en Informática de Gestión. Universidad Pablo de Olavide (Sevilla).

Proyecto presentado durante el curso 2009/2010 con una nota de 9/10.

logo java gstreamer logo sqlite logo

El proyecto consistía en realizar un reproductor de medios digitales, ya que era capaz de reproducir archivos de audio y video, tanto de forma local, como a través de internet haciendo uso de la tecnología "streaming" entre ordenadores conectados entre sí, y utilizando este mismo reporductor.

El streaming consiste en la distribución de audio o video por Internet. La palabra streaming se refiere a que se trata de una corriente continua (sin interrupción). El usuario puede escuchar o ver en el momento que quiera. Este tipo de tecnología permite que se almacenen en un búfer lo que se va escuchando o viendo. El streaming hace posible escuchar música o ver videos sin necesidad de ser descargados previamente.

Wikipedia

Dicho reproductor está escrito en su totalidad en JAVA, tanto la parte lógica del proyecto como la interfaz gráfica (SWING). La utilización de JAVA se debió a querer llevar a cabo todo lo aprendido durante mis años de carrera, donde habíamos utilizado JAVA como principal lenguaje de programación, además de ser una tecnología multiplataforma ampliamente extendida.

La herramienta que usé para el desarrollo de la parte musical, en pocas palabras, para reproducir música, fueron la librerías GStreamer. El motivo de su utilización fue porque se trata de una herramienta bastante utilizada por diversos sistemas de reproducción musical, multiplataforma y que trabaja de forma espectacular con flujos de datos a través de internet como de forma local.

Aunque hago referencia a la base de datos SQLite, esta parte no se llegó a implementar por falta de tiempo, aunque toda la información que se pretendía guardar se almacena mediante ficheros de texto. He marcado más arriba SQLite solo por el hecho de que la idea principal se desarrolló con dicha base de datos relacional.

El punto clave de este reproductor era que, tan solo con tener instalado dicho reproductor en varios dispositivos, seríamos capaces de reproducir medios de forma remota desde nuestro propio reproductor. Es decir, tanto el cliente como el servidor estarían controlados por este software, y entre ellos se harían las pertinentes peticiones para poder reproducir en el cliente, lo que hubiese en el servidor.

Para la versión 0.1 no se pudo realizar un servidor RTSP (esta versión es la que fue presentada como proyecto final), por lo que la conexión se hizo a través de una red privada virtual (VPN), por donde los distintos reproductores se comunicaban mediante sockets utilizando la arquitectura cliente servidor entre dos PCs.

El protocolo de flujo de datos en tiempo real (del inglés Real Time Streaming Protocol) establece y controla uno o muchos flujos sincronizados de datos, ya sean de audio o de video. El RTSP actúa como un mando a distancia mediante la red para servidores multimedia.

Wikipedia

Existen implementados dos tipos de servidores por sockets.

Debido a la imposibilidad de contar con un servidor RTSP, se utilizó un servidor web Apache para poder tener acceso a dichos medios, perdiendo algo de control del flujo de datos.

En esta versión 0.1, a parte del gran logro que supuso el poder acceder a datos alojados en otros ordenadores y controlados por el mismo reproductor, el mayor logro fue la configuración del núcleo del programa, el cual, tras muchas actualizaciones (creación del servidor RTSP y modificación posterior de la interfaz), dicho núcleo no ha sido modificado en nada y todo ha sido gracias a la utilización de patrones de diseño, en concreto, el factoría y el estrategia, los cuales en la documentación viene explicado cual es su cometido y como están estructurados.

Sin más, a continuación dejo los enlaces para acceder tanto a la documentación como al código del proyecto.

Si alguien tiene alguna duda, pregunta, etc., le invito a que me escriba a mi correo: mail

Documentación

Código fuente

 

Volver al blog