Aprenda como utilizar os principais recursos providos pelo framework JMF, conhecendo seus componentes mais importantes
Eduardo Jorge, Marcus Vinicius e Silvio Martins
Diversos setores da sociedade demandam softwares que possuam recursos de áudio e vídeo, tais como: segurança, controle de acesso e entretenimento, motivados pela redução do custo das câmeras e ampliação da largura de banda da internet. Com o objetivo de agilizar e simplificar o desenvolvimento dessas aplicações, tem
Nesse artigo apresentaremos o uso do JMF (Java Media Framework). Será apresentada uma visão geral do framework, incluindo as principais funcionalidades e pontos de extensão. Em seguida, mostraremos o exemplo prático, que será um software para controle de visitantes focando no módulo para captura de fotos.
Java Media Framework
O JMF é um framework da Sun (desenvolvido em parceria com a Intel e IBM) que permite manipular recursos multimídia
Um ponto a ser observado é que a atualização mais recente da JMF data de novembro de 2004, porém, a Sun recentemente anunciou que daria maior suporte ao JMF (ver Links).
Para utilizar os serviços de áudio e vídeo disponibilizados pelo framework são necessários dispositivos de entrada (microfones, câmeras, arquivos de áudio/vídeo, streaming via rede) e/ou dispositivos de saída (monitor e caixa de som) a depender da necessidade, que poderá ser, por exemplo:
· Tocar arquivos de mídia em um applet ou aplicação desktop;
· Capturar áudio e vídeo de um microfone e câmera de vídeo USB;
· Transmitir áudio e vídeo em tempo real pela Internet.
Para o desenvolvimento de aplicações multimídia é importante o entendimento do conceito de codec (veja o quadro “Codec”). A Tabela 1 mostra alguns dos formatos (codecs) utilizados pelo JMF. O framework também permite a implementação de novos codecs.
Codec
Um codec é utilizado para compressão e descompressão de dados. A compressão é utilizada quando estes dados vão ser transmitidos ou armazenados. No componente receptor estes dados são descompactados para um formato de apresentação.
Protocolos |
HTTP, FTP, RTP |
Audio |
PCM, GSM, G.723, MPEG, outros. |
Vídeo |
MPEG-1, Cinepak, H.261, H.263, JPEG, outros |
Tabela 1. Principais formatos suportados
Arquitetura
Na documentação desenvolvida pela Sun (ver Links), a arquitetura do JMF é comparada ao processo decorrido desde a filmagem até a visualização do vídeo em um dispositivo de saída (ver Figura 1). Um DataSource encapsula o stream de áudio/vídeo como um Vídeo Tape e um Player disponibiliza processamento e mecanismos de controle (avançar, retroceder) similar a um vídeo-cassete, que reproduzirá a mídia em um dispositivo de saída, tal como microfones e monitores.
Figura 1. Analogia da solução JMF
Para criação dos componentes providos pelo JMF para capturar, processar e apresentar os recursos de multimídia são utilizados os seguintes componentes gerentes (Managers):
· Manager: Responsável pela criação de DataSources e Players, entre outros, além de possibilitar a customização de componentes do framework;
· PackageManager: Mantém um registro dos pacotes que contém classes do JMF, tal como classes customizadas: Players, Processors e DataSources;
· CaptureDeviceManager: Contém uma base com os dispositivos de captura detectados na máquina;
· PlugInManager: Responsável por manter a lista de plug-ins disponíveis para uso pelo JMF. É possível instalar novos plug-ins.
Fluxo da Aplicação
Na Figura 2 está representado o fluxo básico de colaboração entre os principais componentes do JMF para capturar o vídeo de uma câmera USB, podendo ocorrer variações caso a origem da mídia seja outra, por exemplo, um arquivo. Os componentes são:
· CaptureDeviceInfo: encapsula as informações do dispositivo de entrada;
· ...