itulo style="MARGIN: 0cm 0cm 12pt">Adicione recursos de áudio e vídeo à sua aplicação Java

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-se buscado a reutilização com a adoção de frameworks.

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 em aplicações Java. Atualmente encontra-se na versão 2.1.1, sendo disponibilizado sob licença Sun Community Source Licensing (SCSL) que permite o estudo do código e sua alteração, mas não a livre publicação de versões alteradas.

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;

·         ...

Quer ler esse conteúdo completo? Tenha acesso completo