Servidores de Información Multimedia 2º Ingeniero Técnico de Telecomunicación Imagen y Sonido

Documentos relacionados
Introducción a la JMF

Java Media Framework

Introducción a JMF. Jose Jesus García Rueda. (Extractado y adaptado de

Players. Servidores de Información Multimedia 2º Ingeniero Técnico de Telecomunicación Imagen y Sonido

Procesadores (Processors)

Captura de medios con la JMF

Instituto Politécnico Nacional Escuela Superior de Cómputo

Aplicaciones Telemáticas Avanzadas. Programación n con Java Media Framework

Programación con Java Media Framework

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Diseño y Evaluación de Configuraciones. Componentes software para cargar el sistema

Desarrollo de Aplicaciones Multimedia

Applets. Un applet es: desde el punto de vista de código Java, un programa diseñado para ser ejecutado en el contexto de una página web.

Bibliografía (Java) Java: Introducción a Java

1. Cómo hacer un applet? Implementación de un Applet (awt) Ejecución de los Applets Hacer el archivo HTML con los siguientes

import java.applet.*; import java.awt.*; import java.awt.event.*;

Ing. Mirko Manrique Ronceros

Universidad Autónoma de Tlaxcala. M.C. José Juan Hernández Mora. Primera Sesión

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

JAVA 1. Introducción

JAVA: Applets. Diseño de aplicaciones web.

Creación de Applets Simples

Applets. Programación de Applets. Cómo hacer un applet Java. Cómo se ejecuta un applet Java. Programación Orientada a Objetos Facultad de Informática

APLICACIONES MÓVILES NATIVAS. Sesión 8: Arquitectura de las aplicaciones Android

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Applets y Aplicaciones

Sincronización de Threads

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.

Aplicación Android de Asistencia al Caminante

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Excepciones. Excepciones

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I

TEMA 1 APPLETS 1. INTRODUCCION

Introducción a Java LSUB. 15 de enero de 2015 GSYC

JAVA 7 Los fundamentos del lenguaje Java

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++;

FSD Práctica Invocación Remota: JavaRMI. Estudio Previo. Información

Examen escrito de Programación 1

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

Qué es Java? Introducción a Java. Lenguajes Orientados a Objetos. Qué es Java? Historia de Java. Objetivos de Java

Tema 7. Construcción de Applets en Java

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

d) Mencione dos diferencias y dos semejanzas entre clases abstractas e interfaces.

Un breve resumen del lenguaje Java

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

Desarrollo de Servicios Web con JBuilder

FRAMEWORK 2 Recepción de SMS

Interacción entre Aplicaciones: objetos distribuidos e invocación remota

Clases Java para comunicaciones en red

Programación Java Curso C Draw

Construcciones del Lenguaje Java

Gestores de seguridad en Java

Introducción Descripción del servicio

JConferencia: Audioconferencia en Java Redes Globales

Implementación del nivel de datos usando db4o

Objetivos y Temario CURSO JAVA 7

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Uso de excepciones en Java

Programación Interactiva Introducción a Java. Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle

Tema 7: Servidores Web (II) Contenidos

Práctica 18c. Práctica 18c. José M. Ordax

Caso de uso 1: Identificar usuario.

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro

1. Visión general de RMI

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

Java en 2 horas. Rodrigo Santamaría

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Tema 5 Corrección y Robustez Excepciones en Java

(Dibujo de arquitectura de Ebay) Arquitectura software en capas. Arquitectura Web Multicapa. Tema 6: datos: ficheros o bbdd. 2. Capa Presentación:

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Implementación de clientes con CORBA y Java

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Tema 6. Threads: programas multitarea

JAVA RMI (REMOTE METHOD INVOCATION)

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

URLs en Java. Contenido. La clase URL Acceso al contenido de una URL La clase URLEncoder La clase URLConnection

Manejo de excepciones en Java. ELO329: Diseño y Programación Orientados a Objetos Agustín J. González

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

Introducción Entorno de ejecución Referencias Descripción del servicio

Aplicaciones Web. Aplicaciones Distribuidas

Programación concurrente en Java

RMI. Aplicaciones Distribuidas

Director: Tinetti,, Fernando

Examen. Programación II

Programación Orientada a Objetos. Java: Excepciones

Una aplicación sencilla con CORBA y Java

Procesamiento distribuido en Java

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2007.

Desarrollo de aplicaciones de acceso a base de datos con JBuilder 7

3URJUDPDFLyQ-DYD. 3UiFWLFD. -DYLHU*DUFtDGH-DOyQÂ -RVp,JQDFLR5RGUtJXH] $OIRQVR%UD]iOH]Â $OEHUWR/DU]DEDOÂ -HV~V&DOOHMDÂ -RQ*DUFtD

Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...

Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Objetivo de aprendizaje del tema

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011

INGENIERÍA DEL SOFTWARE. 4º ING. INFORMÁTICA (UPV/EHU) 31 de MAYO de 2001

Android y Java para Dispositivos Móviles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Transcripción:

IntroducciónalaJMF Mario Muñoz Organero 2º Ingeniero Técnico de Telecomunicación Imagen y Sonido Departamento de Ingeniería Telemática Universidad Carlos III de Madrid munozm@it.uc3m.es 2 Indice Presentación de la JMF Modelo de procesamiento de la JMF Extensibilidad de la JMF Entrada en JMF Reproduciendo la información Procesando información Guardando la información Aplicación de ejemplo

3 Presentación de la JMF La Java Media Framework (JMF) es un API para la manipulación y procesamiento de medios en Java. Permite la captación de medios (de micrófono, red...), su procesamiento (multiplexación, codificación...), su reproducción, su almacenamiento ace a e y su difusión. usó Una de las principales características de los medios es su dependencia con la variable abetiempo te ( time-based media ). La JMF tiene que cumplir requisitos temporales en el manejo de medios. Las APIs de la JMF pueden usarse para realizar aplicaciones y Applets Java (veremos varios ejemplos a lo largo de la asignatura) 4 Presentación de la JMF (cont) Versiones: JMF1.0API Daba soporte a la presentación (reproducción) de medios. JMF2.0API Da soporte adicional i para la captación demedios (de dispositivositi de captura o red) y para su almacenamiento (en disco o difusión a través de la red), Permite contralar el tipo de procesamiento que se realiza durante la reproducción, Tiene soporte para plug-ins mediante un API que permite extender la JMF JMF 2.1.1 No hay cambios significativos en el API (quizás lo más significativo en torno a RTP), hay una actualización en la implementación de Sun

5 Presentación de la JMF (cont) Algunos paquetes Java definidos id en la 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 6 Presentación de la JMF (cont) JMF soporta la transmisión y recuperación de medios por la red mediante RTP. Los APIs para RTP no son obligatorios en la especificación de la JMF Sin embargo la implementación de referencia de Sun e IBM si que soporta por completo el API de RTP (es la implementación que vamos a utilizar) La implementación de referencia de la JMF tiene versiones para Windows, Solaris, Linux, además de una versión pure-java (que funciona con cualquier JVM) Es preferible instalar una versión específica para el SO pues da unos rendimientos mejores. Para obtener la implementación de referencia de la JMF: http://java.sun.com/products/java-media/jmf/ Para perder el miedo, veamos unas demos : http://java.sun.com/products/java-media/jmf/2.1.1/samples/index.html

7 Modelo de procesamiento de la JMF La figura muestra el modelo de componentes usado porla JMF 8 Modelo de procesamiento de la JMF (cont) Modelo general: Ejemplo:

9 Extensibilidad de la JMF La JMF soporta Plug-ins como se muestra en la figura: 10 Entrada en JMF La entrada de datos (Input) en la JMF se direcciona normalmente por un objeto javax.media.medialocator. Un MediaLocator es parecido a una URL identificaifi de forma única un recursoenlared.laventajaesqueelmedialocator no tiene por qué tener definido ningún manejador (handler) para su protocolo de cara a poder crearse. Ejemplo: MediaLocator para una sesión RTP: rtp://address:port[:ssrc]/content-type/[ttl] De un MediaLocator se crea una instancia de javax.media.protocol.datasource que representa la entrada de datos para el resto de componentes en la arquitectura: Players, Processors y DataSinks. Nota: Un dispositivo de captura también tiene asociado un MediaLocator

11 Reproduciendo la información Se utiliza un Player El Player solo puede presentar/reproducir en pantalla (o altavoces), no puede guardar en fichero. Para crearlo se necesita utilizar una clase que hace de factoría para los Players que es la clase Manager. Un Player tiene asociado un conjunto de estados. No todas las operaciones están permitidas en todos los estados. 12 Procesando información Si se quiere tener un control total sobre el procesamiento de los medios (por ejemplo controlar el tipo de codec que se utiliza), o si se quiere poder mandar la información a otro destino distinto de la pantalla y altavoces se usa la clase Processor. Los Processors tambiénseconstruyenatravésdelmanager. También pasan por diferentes estados (se añade un estado de configuración al Player)

13 Guardando la información Para guardar la información ió en disco o mandarla a través de la red se usa un DataSink. Los DataSink se construyen a partir de la salida de los Processor. El destino se especifica como un MediaLocator. Un destino que realice la difusión por la red mediante RTP no será más que el identificado por un MediaLocator como: rtp://address:port[:ssrc]/content-type/[ttl] 14 Aplicación de ejemplo El SimplePlayerApplet.java l es uno de los ejemplos que vienen con la JMF. Veamos su aspecto:

15 Aplicación de ejemplo (cont) Paquetes que usa: import java.applet.applet; import java.awt.*; awt import java.awt.event.*; import java.lang.string; import java.net.url; import java.net.malformedurlexception; import java.io.ioexception; import java.util.properties; import javax.media.*; 16 Aplicación de ejemplo (cont) public class SimplePlayerApplet extends Applet implements ControllerListener { // media Player Player player = null; // component in which video is playing Component visualcomponent = null; // controls gain, position, start, stop Component controlcomponent = null; // displays progress during download Component progressbar = null; boolean firsttime = true; long CachingSize = 0L; Panel panel = null; int controlpanelheight = 0; int videowidth = 0; int videoheight i = 0;

17 Aplicación de ejemplo (cont) public void init() { panel = new Panel(); panel.setlayout( null ); add(panel); panel.setbounds(0, 0, 320, 240); // input file name from html param String mediafile = null; // URL for our media file MediaLocator mrl = null; URL url = null; try { url = new URL(getDocumentBase(), mediafile); mrl = new MediaLocator(url.toExternalForm()); toexternalform()); } catch (MalformedURLException mue) { } try { player = Manager.createPlayer(mrl); } catch (NoPlayerException e) { } player.addcontrollerlistener(this); } catch (Exception e) { } } 18 Aplicación de ejemplo (cont) public void start() { //$ System.out.println("Applet.start() is called"); } // Call start() to prefetch and start the player. if (player!= null) player.start(); public void stop() { //$ System.out.println("Applet.stop() is called"); if (player!= null) { player.stop(); player.deallocate(); } }

19 Aplicación de ejemplo (cont) public synchronized void controllerupdate (ControllerEvent event) { // If we're getting messages from a dead player, // just leave if (player == null) return; // When the player is Realized, get the visual // and control components and add them to the Applet if (event instanceof RealizeCompleteEvent) { if (progressbar!= null) { panel.remove(progressbar); progressbar = null; } int width = 320; int height = 0; if (controlcomponent == null) if (( controlcomponent = player.getcontrolpanelcomponent())!= null) { controlpanelheight lh =controlcomponent.getpreferredsize().height; i h panel.add(controlcomponent); height += controlpanelheight; }