DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo Java Magazine 57 - Aplicações Multimídia em Java

Artigo publicado pela Java Magazine edição 57.

Esse artigo faz parte da revista Java Magazine edição 57. Clique aqui para ler todos os artigos desta edição

 

Aplicações Multimídia em Java

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.

 

"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    20 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Paulo Cesar
Este artigo me ajudou bastante, mas gostaria de tirar uma duvida como salvar a imagem capturada diretamente no PostgreSQL ?

[há +1 ano] - Responder

 

Dyego Souza Do Carmo
Opa !

Voce deve utilizar campos do tipo Blob....

ae na hora de gravar utilize um prepared statement...

e use o metodo :

.setObject(index,ObjetoArrayDeBytes);

Valeu !

[há +1 ano] - Responder
 

Diogo Pereira
Boa tarde, estou fazendo esse tutorial mas aqui não funcionou. Quando crio a classe EfeitoVideo ele pede para implementar todos os métodos da classe Effect. Para executar criei os métodos deixando os retornos com null e retornou o seguinte erro:
======================================================================
The input format is not compatible with the given codec plugin: JavaMagazine.EfeitoVideo@1820dda
Failed to realize: com.sun.media.ProcessEngine@b8df17
  Cannot build a flow graph with the customized options:
    Unable to add customed codecs:
      JavaMagazine.EfeitoVideo@1820dda
Error: Unable to realize com.sun.media.ProcessEngine@b8df17
======================================================================
Os métodos que ele obriga implementar são: getControl, getControls, reset, close, open, getName, setOutputFormat, setInputFormat, getSupportedInputFormats. Obrigado.
[há +1 ano] - Responder

 

Dyego Souza Do Carmo
Opa !

Chegou a instlar o JMF em todas as VMS instaladas na maquina ?

Este tipo de erro ocorre quando ele nao acha o codec
[há +1 ano] - Responder
 

Cleibson Gomes Da Silva
Gostei muito do Artigo, mais passei por uma bronca aqui, parece que depois que fecho a aplicação o JMF ainda fica conectado ao dispositivo, como seria o método para finalizar todas conexões ??? estou é outra coisa. por que quando abro ele pela primeira vez tudo bem, mais quando fecho e abro novamente não faz nada, eu acho que é isso
[há +1 mês] - Responder

 

Dyego Souza Do Carmo
Percebi isto tambem , algumas vezes eu tinha que forçar a saida do sistema com um System.exit(0);

A API do JMF é bugada e velha , espero que a Oracle corrija isto logo :(
[há +1 mês] - Responder
 

José Nilton Silva Correia
Olá. Nunca utilizei JMF e preciso capturar a imagem de uma webcam e disponibilizá-la numa página web, somente. Pelo o que eu já pesquisei, necessito utilizar um applet. Você poderia me fornecer algumas dicas de como proceder?
abraços.
[há +1 ano] - Responder

 

Dyego Souza Do Carmo
Opa !

Nesta site voce tem um exemplo completo desta applet: www.javavideo.com/videopapplet

Valeu !
[há +1 ano] - Responder
 

José Nilton Silva Correia

Não consegui acessar este site.

Está correto?

Abraços!

[há +1 ano] - Responder
 

Dyego Souza Do Carmo
Pelo visto foi retirada do ar !!!

Mande um email para mim e eu te respondo com o fonte(ainda tenho aqui !)
[há +1 ano] - Responder
 

José Nilton Silva Correia

Não consegui identificar o seu e-mail... Se puder me retornar, envie para este endereço


vini.ti@uol.com.br


abraços.

[há +1 ano] - Responder
 

Dyego Souza Do Carmo
Enviado :)
[há +1 mês] - Responder
 

Andre Zapala
Tenho uma applet em JMF assinada com o jmf.jar tb assinado, ele esta com as permissoes funcionando a unica coisa q retorna null é a lista de devices, nisso nao consigo usar a webcam instalada no pc cliente.(Na ide roda de boa)

Alguma dica?


vlw
[há +1 mês] - Responder

 

Alberto Souza Leal
Boa tarde
consegui fazer a aplicacao do tutorial rodar perfeitamente, mas gostaria de saber como q eu posso determinar o tamanho da imagem da web cam em vez de 320x240 para 640x480 ( a camera suporta esse tamanho)


Obrigado
[há +1 mês] - Responder

 

Dyego Souza Do Carmo
no jmf tem um local aonde vc manda uma paramelhors de inicializacao

.setInitialParams(map);

neste map vc manda a chave 'resolution' com o parametro do tamanho que vc deseja...

se nao suportar ele vai dar um exception.
[há +1 mês] - Responder
 

Luis Edicle
Fiz os primeiro passo criando as classes FrameVideo e GerenteJMF e no momento de executar dar o seguinte erro:

java.lang.NullPointerException
at GerenteJMF.getPlayerVideo(GerenteJMF.java:16)
at GerenteJMF.getPainelVideo(GerenteJMF.java:25)
at FrameVideo.inicializarJMF(FrameVideo.java:34)
at FrameVideo.(FrameVideo.java:18)
at FrameVideo.main(FrameVideo.java:41)

16:MediaLocator ml = new MediaLocator(device.getName());
25:return this.getPlayerVideo().getVisualComponent();
34:pnlVideo = gerente.getPainelVideo();
[há +1 mês] - Responder

 

Tiago Nery De Oliveira
Consegui rodar o tutorial numa boa. Agora preciso capturar vídeos ao invés de fotos. Gostaria de saber se você tem alguma aplicação deste tipo ou tem algum tutorial?

Desde já agradeço. Valeu!!!
[há +1 mês] - Responder

 

Luis Edicle
Tiago vc pode enviar para mim o seu código do tutorial... quero ver onde estou errando....
ediclebb@hotmail.com
[há +1 mês] - Responder
 

Devmedia - Equipe De Moderacao
Luis, se precisar, o código fonte desse artigo encontra-se junto a opção "código fonte", ao lado da opçao de download da revista.
[há +1 mês] - Responder
 

Tiago Nery De Oliveira
Pode ser que o jmf não esteja conseguindo iniciar sua webcam.
[há +1 mês] - Responder
 



Publicidade
Autor
Eduardo Jorge

é doutorando em Difusão do Conhecimento pela UFBA, mestre em Informática pela UFPB e gerente de projetos do Instituto Recôncavo de Tecnologia.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03