Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia...

57
Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Transcript of Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia...

Page 1: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Java Media Framework 2.1Programação Multimídia em

JavaSBMídia - 2000

Jorge Fernandes e BobNatal, Junho de 2000

Page 2: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Conteúdo

• O que é a Java Media?

Page 3: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Java Media Framework 2.1

• Versão Otimizada para Windows• 5.10MB - JFM-2_1-win.exe• http://java.sun.com/products/java-

media/jmf/• The JMF 2.0 API was developed by Sun

Microsystems, Inc. and IBM. • The JMF 1.0 API was developed by Sun

Microsystems, Inc., Silicon Graphics Inc., and Intel Corporation.

Page 4: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

JMF API Specification &Guide

• Specification 23 11/2000jmf-2_0-spec.zip = 732,426 bytes.

• GUIDEjmf2_0-guide.pdf = 2,993,967 bytes.

Page 5: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

O que é o Java Media Framework?

• Binary Code License Agreement• MF 2.1 Hardware Requirements • 166 MHz Pentium, 160 MHz PowerPC,

or 166 MHz UltraSparc 32 MB RAM or greater

• Optional: An appropriate sound card foraudio play back, if necessary. For example, a SoundBlaster-compatiblecard for Windows machines without b ilt i di t Ulti di

Page 6: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Tipos de Mídias Suportadas

Page 7: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Referências

• Java Media Framework API Guide

Page 8: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Mídia Temporizada

Page 9: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1 - Trabalhando com Mídia Temporizada

• 1.1 - Modelo Geral de Processamento• 1.2 - O que é Mídia Temporizada?• 1.3 - Apresentação de Mídia

Temporizada• 1.4 - Processamento de Mídia• 1.5 - Captura de Mídia

Page 10: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.1 - Modelo Geral de Processamento de Mídia

Entrada

Capturaatravés deDispositivo Microfone, Câmera, etc

Arquivo

Rede

Processamento

Filtragem

Compressão-Descompressão

Conversãoentre formatos

Apresentaçãoem Dispositivo(Falante, Tela,Projetor)

Saída

Arquivo

Rede

Page 11: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000
Page 12: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.2 - O que é Mídia Temporizada?

• Restrições Temporais• Formato da Mídia

QuickTime, MPEG, WAV• Múltiplos canais ou tracks (trilhas)• Localização e Protocolo (URL)

http://www.dimap.ufrn.br/~jorge/*.gif• Formas de Transferência dos dados

Push (controlado pelo cliente: http, file)Pull (controlado pelo servidor: rtp, video-on-

Page 13: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.2 - O que é Mídia Temporizada? 1.2.1 - Dados com Restrições

Temporais Estritas• recepção • Apresentação• time-based media (chamado de

streaming media)

Page 14: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.2 - O que é Mídia Temporizada? 1.2.2 - Formatos de Mídia

• videoFormato, tipo, qualidade, CPU, BandaMPEG-1, MPEG, alta,alta,altaJPEG, quicktime-avi-rtp, alta, alta, alta

• audioPCM, avi,quicktime,wav,alta,baixa,altaum-law, avi,quicktime,wav,rtp,low,low,altaMPEG-1,MPEG,alta,alta,altaMP3,MPEG,altamalta,media

Page 15: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.2 - O que é Mídia Temporizada? 1.2.3 - Múltiplos Canais e

Multiplexação

QuickTimeÁudio

Vídeo Multiplexação De-multiplexação

Áudio

Vídeo

Page 16: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.3 - Apresentação da Mídia

• 1.3.1 - Controles• 1.3.2 - Latência• 1.3.3 - Qualidade

Page 17: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.3 - Apresentação da Mídia

1.3.1 - Controles

Page 18: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.3 - Apresentação da Mídia

1.3.2 - Latência• Start latency

Diferença de tempo entre o pressionar do start e a apresentacão da mídia (particularmente importante quando a mídia é trazida via rede)

• Múltiplas Streamsvídeo tem que esperar pelo som, por

exemplo

Page 19: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.3 - Apresentação da Mídia

1.3.3 - Qualidade da apresentação

• Depende do:esquema de compressão usadocapacidade de processamento do sistema

de playbackbanda passante (para redes) - bit rateframe rate ( 30 quadros por segundo = TV e

VCR)

Page 20: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.4 - Processamento

• Multiplexação• Compressão• Conversão• Filtros• Despacho para o Dispositivo

Page 21: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

1.5 Captura de Mídia

• DispositivosMicrofone + Placa de ÁudioCâmera + Placa de Vídeo

• Controles

Page 22: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2 - Entendendo o JMF

Page 23: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.1 Pra Que Serve o Java Media Framework

• Criação de Aplicações e Applets• Tipos de Mídia Suportadas

AIFF, AU, AVI, GSM, MIDI, MPEG, QuickTime, RMF e WAV

• Plataforma portável para tratamento (captura, processamento e armazenamento) de mídia

Page 24: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.2 - Java Media Framework(Fonte: JMF API Guide)

• DataSourceEncapsula mídia temporizada

• PlayerMecanismos de processamento e controle

• Dispositivos de Entrada e Saída

Page 25: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Aspectos Específicos

• ApresentaçãoPlayersProcessorsControlsEvents

• ProcessamentoControlsSaída

• Captura

Page 26: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.3 - Arquitetura de Alto Nível (Fonte: JMF API Guide)

Page 27: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4 - Elementos da Arquitetura de

Alto Nível• 2.4.1 - Time Model (Modelo de Tempo)• 2.4.2 - Managers (Gerenciadores)• 2.4.3 - Event Model (Modelo de

Eventos)• 2.4.4 - Data Model (Modelo de Dados)• 2.4.5 - Controles• 2.4.6 - Componentes de GUI• 2.4.7 - Extensibilidade

Page 28: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.1 - Modelo de Tempo

MediaTime = MediaStartTime + Rate(TimeBaseTime - TimeBaseStartTime)

Page 29: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Modelo de Tempo

• TimeBaseControla a passagem do tempo enquanto a

mídia está sendo apresentadaSimilar a um cristal osciladorNão pode ser parado ou resetado

• Clock’s media timeposição corrente dentro de uma stream de

mídia0 -> tempo máximo da mídia

• Duração = t final apresentação

Page 30: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.2 - Managers(Supervisores)

• Supervisionam e integram players, processors, datasources, datasinks, packages, devices e plugins diferentes, usando a interface de servicos provida por estes objetos

• Manager - construção de players, procerssadores, datasources e datasinks

• PackageManagers - registro de pacotes de classes

Page 31: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.3 - Modelo de Eventos

• Padrão JavaBeans

Page 32: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.4 - Modelo de Dados

Page 33: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.4 - Modelo de Dados

Push e Pull Data Sources• Pull Data Sources

O cliente inicia a transferência e controla o fluxo de dados. HTTP e FILE.

• Push Data SourcesO servidor inicia a transferência e controla o

fluxo de dados. Broadcast media, multicastmedia, e video-on- demand (VOD). Real-time Transport Protocol (RTP)

Page 34: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.4 - Modelo de Dados

Formatos

sample rate, bits per sample,number of channels.

Page 35: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.5 - Controles

Page 36: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Alguns Controles Padronizados (1/2)

• CachingControlMonitorar progresso de downloads

• GainControlAjuste no volume de Áudio

Page 37: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Alguns Controles Padronizados (1/2)

• StreamWriterControlControla tamanho de streams

• FramePositioningControlAjusta da Posicao do frame

• FrameGrabbingControlCaptura conteúdo de um frame

• FormatControlConsulta ou ajustar o formato

• TrackControlControla o processamento em uma trilha específica

• PortControl e MonitorControlControla Processo de Captura

• Codec ControlsSilenceSuppressionControl

BitRateControl

FrameProcessingControl

FrameRateControl

QualityControl

Page 38: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.6 - Componentes de GUI

QualityControl

getControlComponent.

ControlComponent.

Page 39: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.7 - Extensibilidade

Através da implementação de novos plug-ins ou de classes que implementam Controller,Player, Processor, DataSource, ouDataSink

Page 40: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

2.4.8 - Apresentação

• ControladoresEstados e métodosTipos de Controladores

PlayersProcessors

• Players• Processors• Controles

GUI

Page 41: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Controladores (Controllers)

Page 42: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

JMF Player

• Processa e mostra um stream de leitura• Não realiza controle sobre o

processamento e rendering da mídia• Player Model

Page 43: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Relacionamento entre Classes do Player

Page 44: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Estados de um Player

Page 45: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Processor Model

Page 46: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Controller Events (1/3)

Page 47: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Controller Events (1/3)

Page 48: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Controller Events (1/3)

Page 49: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

4 - Processamento

• Estados e métodos• Controles• Saída

Page 50: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000
Page 51: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000
Page 52: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000
Page 53: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000
Page 54: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

5 - Captura

• Dispositivos• Dados• Controle• Armazenamento• Transmissão

Page 55: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

6 - Extensibilidade

Page 56: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

7 - RTP

Page 57: Java - CIC/UnBjhcf/MyBooks/itjava/slides/... · Java Media Framework 2.1 Programação Multimídia em Java SBMídia - 2000 Jorge Fernandes e Bob Natal, Junho de 2000

Java Media Framework 2.1Programação Multimídia em

JavaSBMídia - 2000

Jorge Fernandes e BobNatal, Junho de 2000