360 likes | 582 Views
Java Media Framework. Sergio Catalán Osorio & Christian Nievas Grondona. Programación de Sistemas 2003. Tópicos. Introducción a los datos en tiempo real. Presentación de Java Media Framework (JMF). Captura, Procesamiento y Entrega de Medios con JMF. Ejemplo. Datos en Tiempo Real.
E N D
Java Media Framework. Sergio Catalán Osorio & Christian Nievas Grondona. Programación de Sistemas 2003.
Tópicos. • Introducción a los datos en tiempo real. • Presentación de Java Media Framework (JMF). • Captura, Procesamiento y Entrega de Medios con JMF. • Ejemplo.
Datos en Tiempo Real. • Son los datos que pueden cambiar considerablemente con respecto al tiempo. • Estos medios pueden ser obtenidos de diversas fuentes, como archivos locales o remotos, cámaras, micrófonos y difusiones en vivo. Ej: Sistemas Multimedia. (Audio, Video) Animaciones. Video - Conferencia.
Datos en Tiempo Real. • Streaming Media: La característica principal de este medio es que requiere de un tiempo de entrega y de procesamiento, y por esto se debe controlar, ya que una vez iniciado el flujo de datos, se deben satisfacer ciertos limites de tiempo.
Captura : Estos pueden ser capturados desde una fuente en vivo para procesarla y reproducirla o puede ser adquirida de un archivo de forma remota.
Procesamiento : En muchas instancias, la información contenida en un medio es manipulada antes de ser presentado al usuario, ya sea multiplexándola, filtrándola, comprimiéndola, o convirtiéndola en otro tipo de medio.
Presentación : La mayoría de estos medios pueden ser presentados a través de dispositivos de salida tales como parlantes y monitores, u otras destinaciones (Ej.: a la red).
Java Media Framework. • Herramienta (API) que permite la adquisición, procesamiento y entrega de información en tiempo real. • Contiene interfaces basados en Java que permiten el manejo de streaming media.
Arquitectura JMF. • Dos niveles de desarrollo: Alto nivel y Bajo nivel.
Captura. • Un dispositivo de captura multimedia puede actuar como una fuente de entrega de medios basados en el tiempo. Algunos dispositivos entregan múltiples flujos de datos que pueden ser separados mediante el procesamiento.
Presentación (Player). • Unrealized: instanciado. • Realizing: determinando y obteniendo los recursos necesarios. • Realized: ha determinado los recursos necesarios. • Prefetching: preparándose para presentar, obteniendo los datos de la fuente. • Prefetched: preparado para empezar. • Started: reproducción empezada.
Clases e Interfaces. • Interfaz Manager. • Interfaz DataSource. • Interfaz Controller. • Interfaz Player. • Interfaz Processor. • Clase Time. (Interfaz Clock, TimeBase.) ...
Paquetes JMF. javax.media javax.media.bean.playerbean javax.media.control javax.media.datasink javax.media.format javax.media.protocol javax.media.renderer javax.media.rtp javax.media.rtp.event javax.media.rtp.rtcp javax.media.util
Video-Conferencia usando JMF • Se mostrará un programa en java de video conferencia usando las librerías de JMF. • Se explicarán los aspectos más importantes del programa. • La idea es conocer de mejor manera algunas de las funciones mas importantes de JMF mediante un ejemplo práctico.
Clases • El programa se divide en diez clases. • Cada clase tiene una función especifica dentro del programa. • Se mostrarán con detalle sólo las clases que implementan las librerías de JMF.
Clase “Config” • Esta clase se utiliza para cargar y guardar la configuración del programa principal y no tener que estar introduciéndola de nuevo cada vez que se inicie.
Clase “Target” • Esta clase se utiliza para guardar la configuración de puertos y direcciones IP del programa principal y utilizarlos en el resto de clases.
Clase “Misc” • Esta clase se utiliza para albergar los métodos que dan formato al log de la consola del programa.
Clase “Comunicador” • Esta clase principal del programa, es la que contiene el método main(). • Se encarga de construir el entorno gráfico, detectar los dispositivos de captura, y lanzar los transmisores y los receptores cuando el usuario lo indique.
Clase “Transmisor” • Esta clase se utiliza para ser heredada por otra clase que implemente una transmisión RTP ya que implementa los métodos necesarios y que son independientes de las particularidades de cada transmisor (origen, destino, tipo de datos).
Clase “TransmisorAudio” • Esta clase se utiliza para transmitir el audio proveniente de un dispositivo de captura y enviarlo a través de una comunicación RTP. • Esta clase hereda de la clase “Transmisor”, en la cual se encuentran todas las variables miembro que utiliza.
Clase “TransmisorVideo” • Esta clase se utiliza para transmitir el video proveniente de un dispositivo de captura y enviarlo a través de una comunicación RTP. • Esta clase hereda de la clase “Transmisor”, en la cual se encuentran todas las variables miembro que utiliza.
Subclase “StateListener” • Esta subclase de la clase “Transmisor” se utiliza para mantener un escucha del estado del procesador.
Clase “Receptor” • Esta clase se utiliza para ser heredada por otra clase que implemente una recepción RTP ya que implementa los métodos necesarios y que son independientes de las particularidades de cada receptor (origen, destino, tipo de datos).
Clase “ReceptorAudio” • Esta clase se utiliza para recibir y reproducir el audio proveniente de la comunicación RTP. • Esta clase hereda de la clase “Receptor”, en la cual se encuentran todas las variables miembro que utiliza.
Clase “ReceptorVideo” • Esta clase se utiliza para recibir y reproducir el video proveniente de la comunicación RTP. • Esta clase hereda de la clase “Receptor”, en la cual se encuentran todas las variables miembro que utiliza.
Subclase “PlayerWindow” • Esta subclase de la clase “Receptor” se utiliza para mostrar una ventana de reproducción.
Subclase “PlayerPanel” • Esta subclase de la clase “Receptor” se utiliza para mantener un panel de reproducción.