Académique Documents
Professionnel Documents
Culture Documents
Introduccin:
Aplicaciones multimedia
Una aplicacin multimedia es aquella que produce, reproduce, procesa o maneja uno o varios
contenidos multimedia. A su vez un contenido multimedia es aquel que est compuesto de
diversos medios, como pueden ser audio, video, texto, etc. Decimos que un contenido
multimedia est basado en el tiempo en tanto que cada uno de sus medios cambia
significativamente con l. Esta caracterstica hace que un contenido multimedia requiera ser
proporcionado y procesado en unas condiciones temporales estrictas. Por ejemplo cuando se
reproduce un video, si los datos multimedia no pueden ser proporcionados lo suficientemente
rpido pueden producirse pausas y retardos en la reproduccin; por otro lado si los datos no
pueden ser recibidos y procesados lo suficientemente rpido el video se reproduce a saltos en
tanto que se desechan cuadros como medio para mantener la tasa de reproduccin.
Cada uno de los medios de los que se compone un contenido multimedia se denominapista . Por
ejemplo un contenido multimedia correspondiente a una videoconferencia puede contener una
pista de audio y otra de video. Se dice que las pistas que componen un contenido multimedia
estn multiplexadas, al proceso de extraccin de las distintas pistas que componen un contenido
multimedia se le denomina demultiplexacin. Existen distintos tipos de pistas en funcin del tipo
de datos que contienen, como audio y/o video; a su vez cada pista posee un formato que define
como estn estructurados los datos que forman parte de ella. Los distintos formatos se distinguen
en funcin de:
Cada formato est destinado a diferentes tipos de aplicaciones y servicios. Formatos como MPEG
1 de gran calidad pero altos requerimientos de ancho de banda estn destinados usualmente a
aplicaciones que trabajan con almacenamiento local o en dispositivos pticos como CD-ROM o
DVD donde el ancho de banda y la capacidad de almacenamiento no son limitantes. En cambio
otros formatos como H.261 y H.263 se usan para aplicaciones de videoconferencia donde el ancho
de banda es un bien muy escaso; de la misma forma G.723 se usa para producir voz codificada
con tasa de bits reducida para aplicaciones de telefona IP por ejemplo.
Una fuente de datos multimedia se modela mediante un objeto DataSource. Podemos crear una
DataSource directamente a travs de una URL (Universal Resource Locator) o bien mediante un
objeto de tipo MediaLocator.
Reproduccin de contenidos multimedia
En esta pagina
Para reproducir un flujo de datos multimedia, se ha de construir una instancia de la clase de Java
Media Framework Player cuya entrada sea dicho flujo de datos.
Grafico 1 - Esquema de funcionamiento de un Player
Podemos construir un objeto Player indirectamente a travs del mtodo createPlayer() de la clase
de Java Media Framework Manager. El flujo multimedia de entrada al Player constituye un
parmetro del mtodo createPlayer() admitiendose una DataSource, un MediaLocator o una URL.
Tabla 1 - Creacin de un Player. Mtodos createPlayer() de la clase Manager
La mayora de los mtodos que pueden ser llamados en un Player requieren que ste est en el
estado Realized. Como se ver, se puede promocionar a este estado llamando al mtodo realize()
del Player. Java Media Framework tambin permite la creacin de un Player directamente en
estado Realized mediante el mtodo createRealizedPlayer() de la clase Manager. Ntese que este
mtodo bloquea hasta que el Player es realizado[PTE: Peligro]
Un Player ha de pasar al estado Realized antes de que se pueda iniciar y controlar la reproduccin
propiamente dicha del contenido multimedia.
La siguiente tabla recoge los mtodos fundamentales que pueden ser llamados en un Player para
intervenir sobre la reproduccin, junto a informacin acerca de el/los estado/s en los que se
encuentran disponibles:
Tabla 2 - Mtodos fundamentales proporcionados por un Player en funcin del estado
Mtodo Descripcin Disponible en
Detiene la reproduccion,
stop() Estado Started
descendiendo a estado Prefetched
Un player tiene una serie de componentes visuales que se pueden aadir a la aplicacin o applet
para actuar de interfaz con la reproduccin. Los ms importantes son el componente visual y el
componente de control.
De esta forma cada vez que se genera un evento, se llama al mtodo controllerUpdate de cada
una de las instancias registradas. La implementacion del mtodo controllerUpdate consiste en una
serie de sentencias if-else, que pretenden proporcionar una atencin especfica a cada tipo de
evento.
Listado 4 - Ejemplo de creacin de una interfaz bsica para controlar un Player
public synchronized void controllerUpdate(ControllerEvent event) {
if (event instanceof TipoDeEvento){
...
} else if (event instanceof OtroTipoDeEvento){
...
}
...
Codigo fuente completo de ReproduccionJMF.java
En esta pgina
As un Processor recibe a su entrada un flujo de datos multimedia, que representamos como una
DataSource de entrada, y produce un nuevo flujo de datos multimedia correspondiente a la
entrada procesada y que representamos como una DataSource de salida.
Grafico 1 - Esquema de funcionamiento de un Processor
1. Una URL, que puede localizar: archivos multimedia locales o archivos multimedia alojados
en servidores remotos.
2. Una sesin RTP.
3. Una captura de audio y/o video
1. Almacenado en un archivo
2. Transmitido den tiempo real a travs de Internet mediante RTP.
3. Reproducido.
Construyendo un procesador
El mtodo createManager() de la clase Manager devuelve un Processor. El flujo Multimedia de
entrada al Processor es un argumento de createProcessor(), puede consistir en una DataSource,
un MediaLocator o una URL.
Tabla 1 - Creacin de un Processor. Mtodos createProcessor() de la clase Manager
Los estados de un Processsor son muy similares a los de un Player (Estados de un Player).
Cuando un Processor se encuentra en estado Realized, podemos llamar al mtodo
getTrackControls() para obtener sendos objetos TrackControl para cada una de las pistas
contenidas en el flujo de datos MM. Estos objetos permiten especificar el procesamiento que se va
a efectuar sobre cada una de las pistas.
Listado 1 - Ejemplo de obtencin de los TrackControls de las pistas de un Processor
...
controlPista = processor.getTrackControls();
//Obtencion de los formatos de salida soportados para cada pista
for (int i = 0; i < controlPista.length; i++) {
Format[] formatosPista = controlPista[i].getSupportedFormats();
if (controlPista[i].getFormat() instanceof AudioFormat){
formatosAudio = formatosPista;
formatoAudioActual = controlPista[i].getFormat();
} else if (controlPista[i].getFormat() instanceof VideoFormat){
formatosVideo = formatosPista;
formatoVideoActual = controlPista[i].getFormat();
}
}
...
(Continua en listado 3)
Codigo fuente completo de ProcesamientoJMF.java
try {
procesador = Manager.createRealizedProcessor(new
ProcessorModel(
dataSourceOrigen, formatos,descContenido));
}
catch (Exception ex) {
System.err.println(ex);
}
...
Codigo fuente completo de ProcesamientoJMF.java
Una vez obtenidos los TrackControls correspondientes a cada pista. Llamar al mtodo
setFormat() en cada TrackControl para especificar el formato de salida de cada pista (en la
prctica formato de salida del video y del audio). Se debe establecer tambin el descriptor
de contenido de la salida del Processor llamando al mtodo setOutputContentDescriptor del
Processor.
Listado 3 - Ejemplo de uso de TrackControls para establecer opciones de
procesamiento
(Contina al listado 1)
...
public boolean setFormatoVideo(VideoFormat formato) {
controlPista[0].setFormat(formato);
controlPista[0].setEnabled(true);
}
return exito;
}
...
Codigo fuente completo de ProcesamientoJMF.java
5. Iniciar el procesamiento de los datos multimedia llamando al mtodo start() del Processor
Una vez se produzca un evento EndOfMediaEvent u otro que indique el final del procesamiento:
Por ltimo la salida de un Processor tambin puede servir de entrada a otro Processor o
Player