Creando de la aplicación
El objetivo de este proyecto es implementar tanto el servidor RTP, como su cliente y permitir el envío de múltiples streams de datos de manera simultanea. Lo que no se implementará y quedara para próximos desarrollos, es el tema de la obtención dinámica de los streams mediante algún protocolo como RTSP, para poder completar así el objetivo originalmente planteado.
El servidor: Para la creación del servidor se decidió finalmente utilizar la biblioteca VLCJ, ya que inicialmente se contemplo el desarrollo de la aplicación desde cero, pero debido a los tiempos disponibles y la necesidad de implementar diversos códec para el correcto procesamiento de cada tipo de multimedia, más la implementación del protocolo RTP, se observo que no se alcanzaría a lograr un prototipo funcional si se deseaba implementar todo eso. Este servidor realiza el streaming de 3 videos a través de la IP 225.0.0.1, en hebras independientes, utilizando 3 puertos distintos: 5555, 5556, 5557. Cabe destacar que el video es recodificado antes de ser enviado.
El cliente: Gracias a las herramientas proporcionadas por VLC, disponibles a través de VLCJ, fue posible realizar una simple interfaz gráfica en la cual desplegar el streaming de video proveniente a través del protocolo RTP y utilizando una IP multicast. En este cliente se tienen 2 botones para cambiar de canal, es decir asociarse al streaming proveniente de la IP 225.0.0.1 pero en otro puerto. El reproductor incluido en la biblioteca VLCJ tiene incluidas las funciones para pausar, reproducir, detener, cambiar el volumen del audio, etc. De estas funciones se implemento solamente la reproducción, el cambio de volumen, y la detención total (que no termina la reproducción del servidor, ya que no es video "on-demand"). Con estas funciones se logra algo similar a lo que seria la televisión sobre IP.
Se realizo ademas un estúdio en términos de eficiencia de los recursos del sistema al escoger entre que variar para identificar cada canal transmitido, se probo manteniendo constante la dirección IP y variando los puerto, y también el caso opuesto, de mantener constante el puerto y variar la dirección IP para cada canal. Los valores obtenidos se presentan a continuación:
IP Fija
Uso de CPU [%] | Memoria utilizada [GB] | Situación |
0 | 2,48 | Antes de correr el programa |
5 | 2,60 | Servidor corriendo |
12 | 2,73 | Servidor + un cliente |
14 | 2,85 | Servidor + dos clientes |
16 | 2,97 | Servidor + tres clientes |
Puerto Fijo
Uso de CPU [%] | Memoria utilizada [GB] | Situación |
0 | 2,78 | Antes de correr el programa |
7 | 2,90 | Servidor corriendo |
9 | 3,04 | Servidor + un cliente |
10 | 3,14 | Servidor + dos clientes |
12 | 3,20 | Servidor + tres clientes |
A continuación, un par de imágenes que muestran el programa en funcionamiento:
(Doble click para ampliar, click simple para reducir.)
Servidor haciendo streaming de 3 videos (01.mp4, 02.avi, 03.avi) a traves de la direccion multicast 225.0.0.1
Cliente reproduciendo uno de los 3 canales de video disponibles