Vídeo captura utilizando Java e DirectX. Introdução

Documentos relacionados
USANDO APPLETS NO NETBEANS (WEB APPLICATION)...E A APPLET CHAMA ALGUM PACOTE EXTERNO (por Luis Alberto M Palhares de Melo Julho/2011)

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS -

Especialização em Engenharia de Software - CEUT

TUTORIAL JSP & SERVLET

package br.com.cadastro.visao;

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Roteiro para criação de Applet

Unidade 9: Middleware JDBC para Criação de Beans

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Java na Web. Aplicações Web

Programação II Programação para a Web. Christopher Burrows

Programação em Rede JDBC

Apache -Tomcat. Instalação e Configuração. Grupo Multitecnus,

Programação de Computadores - I. Profª Beatriz Profº Israel

Criação de Applets Package: Class Name Base Class: Generate header comments: Can run standalone: Generate Standard methods:

Leonardo Gresta Paulino Murta

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

Assinatura de Applets

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN

Programação Orientada a Objetos II

Instrução para solicitação de Certificados Digitais de Servidor TomCat. SHA1024 e SHA2048

O objetivo da aula é realizar upload de arquivos com aplicação web. Será realizado o upload de duas formas:

Configuração de Cliente de Web Service HTTPS

Programação Orientada a Objetos (DPADF 0063)

Curso de Aprendizado Industrial Desenvolvedor WEB

INSTALAÇÃO E USO DO GOOGLE APP ENGINE PLUGIN utilizando o Eclipse Galileo

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

O programa abaixo exemplifica o uso da classe Image para carregar e mostrar uma imagem localizada em um arquivo.

Faculdades Integradas Santa Cruz. Tutorial de Java MVC WEB Criando uma tela de Login com Banco de Dados

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

Aplicativos Web com Orientação a Objetos

SOLICITAÇÃO DE CERTIFICADO SERVIDOR TOMCAT

Desenvolvendo aplicações

Gerador de código JSP baseado em projeto de banco de dados MySQL

Introdução a relatórios Crosstab com ireport/jasperreports

Documentação Usando o Javadoc

TomCat - Gerando CSR SHA256

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Linguagens de Programação

Geração de CSR para web-server Tomcat

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. Rodrigo Hjort. Robson Ximenes

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: imagecomposite FACULDADE DE TECNOLOGIA SENAC PELOTAS

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Tutorial J2ME Parte 3

TUTORIAL DE INTRODUÇÃO AO CEWOLF

Criando documentação com javadoc

Programação Orientada a Objetos (DPADF 0063)

Criação de Applets com o JBuilder Professor Sérgio Furgeri

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Sistemas Distribuídos

MÓDULO 4 SWING Parte 3

Demoiselle Components

Como usar o bluej. Laboratório I Prof.ª Vera Alves

Prática Sobre Servlets e JSP

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Tutorial Jogo da Velha WEB

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

Enviando com a API JavaMail

Exemplo de Aplicaça o Facebook

J550. Model View Controller

Estudo Dirigido - Parte 1

Programação Orientada a Objetos

Repeater no GASweb. Regiões

Java : Comunicação Cliente-Servidor.

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Introdução à Tecnologia Java 02/2012. Java Aula 04 MDI. 05/09/2012 Celso Olivete Júnior.

insfcanceof new public switch transient while byte continue extends for int null

English Português. By erickalves 25 Julho, :08. Devido à política (#) de segurança. Encontrar Blogs Crie o seu blog de graça Ganhe prêmios

C# - Conexão com MySQL

Um pouco do Java. Prof. Eduardo

SISTEMAS DISTRIBUÍDOS

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Programação por Objectos

Instalando o J2SE 5.0 JDK no Windows 2000/XP

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

Manual de Instruções para a Criação de Ficheiros CSR. Tomcat com Keystore e Keytool

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Tutorial Introdução ao ambiente Eclipse

Procedimentos para Configuração do Ambiente J2EE e J2SE em Ambiente Windows

Java para Desktop. Introdução à Plataforma Java JSE

ÁREA DE CONCENTRAÇÃO EM SISTEMAS E CONTROLE - PG-EEC/S

Java na WEB Servlet. Sumário

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

Objetivos do Curso. Você será capaz de:

Programação para Android. Aula 06: Activity, menus e action bar

Implementando uma aplicação java segura utilizando JAAS. Introdução

Acessando um Banco de Dados

Manual de Envio de Torpedos SMS Comtele. Introdução Cadastrar um Grupo Inserir ou Importar Contatos Ordem de envio...

Adicionando Caixas de Verificação no seu Programa Java

UFG - Instituto de Informática

Invocação de Métodos Remotos

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos

Técnicas de Programação II

Instalando e configurando o Java Development Kit (JDK)

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Transcrição:

Vídeo captura utilizando Java e DirectX Introdução Este documento demonstra como realizar vídeo captura de uma webcam utilizando DirectX e Java. Tecnologias utilizadas: JDK 1.6.0_18 http://java.sun.com/javase/downloads/index.jsp DSJ - DirectShow Java wrapper http://www.humatic.de/htools/dsj/download.htm Leandro Alves ::: Java Development ::: Bacharel em Sistemas de Informação ::: Pós graduando em Desenvolvimento de Sistemas para Web ::: Sun Certified Java Programmer 5.0 leandroalvesbsi@gmail.com

Iniciando projeto Depois de ter feito o download do DSJ no site da Humatic, que se encontra na versão 0_8_61, copie os arquivos "dsj.jar" e "dsj.dll" para seu classpath de preferência, no meu caso utilizei "C:\Program Files\Java\jre6\lib\ext". Crie uma classe, dei o nome de "DSJApplet.java", segue o código: /** * * @author Leandro */ import de.humatic.dsj.capturedevicecontrols; import de.humatic.dsj.dscapture; import de.humatic.dsj.dsfilterinfo; import de.humatic.dsj.dsfiltergraph; import de.humatic.dsj.dsgraph; import javax.swing.*; import java.awt.image.bufferedimage; import java.beans.propertychangeevent; import java.beans.propertychangelistener; import java.io.ioexception; import java.util.arrays; import java.util.hashmap; import java.util.list; import javax.imageio.imageio; import javax.swing.event.internalframeadapter; import javax.swing.event.internalframeevent; /** * This program demonstrates the basics of creating a frame * user interface with a menubar. It also shows how to * add a menubar and dropdown menus to the applet, which wasn't * possible in the basic AWT heavyweight component. **/ public class DSJApplet extends JApplet implements PropertyChangeListener { private DSGraph netgraph = null; private DSFilterInfo dsfilterinfo = null; private DSCapture graph = null; private JComboBox comcameras = new JComboBox(); private JDesktopPane despreview = new JDesktopPane(); private JInternalFrame frame = new JInternalFrame(); private List<DSFilterInfo> filterinfolist = null; private HashMap<String, DSFilterInfo> hashcams = new HashMap<String, DSFilterInfo>(); /** Build an applet interface with a menubar. A * a drop down menu includes Open/Close items * for opening and closing an instance of ParticleFrame. **/ @Override public void init() { chargecams(); comcameras.addactionlistener(new java.awt.event.actionlistener() {

); public void actionperformed(java.awt.event.actionevent evt) { comcamerasactionperformed(evt); add(java.awt.borderlayout.north, comcameras); adddesktoppane(); // init public void adddesktoppane() { despreview = new JDesktopPane(); despreview.setbackground(new java.awt.color(240, 240, 240)); despreview.setborder(javax.swing.borderfactory.createtitledborder("")); this.add(despreview); add(java.awt.borderlayout.center, despreview); public List<DSFilterInfo> getvideodevices() { DSFilterInfo[][] lista = null; try { lista = DSCapture.queryDevices(); catch (Exception e) { e.printstacktrace(); return Arrays.asList(lista[0]); public void chargecams() { try { filterinfolist = getvideodevices(); String[] camnames = new String[filterInfoList.size()]; camnames[0] = ""; for (int i = 0; i < filterinfolist.size(); i++) { if (!filterinfolist.get(i).getname().equalsignorecase("none")) { camnames[i + 1] = filterinfolist.get(i).getname(); hashcams.put(filterinfolist.get(i).getname(), filterinfolist.get(i)); comcameras.setmodel( new javax.swing.defaultcomboboxmodel(camnames));

catch (Exception e) { e.printstacktrace(); private void comcamerasactionperformed(java.awt.event.actionevent evt) { String selectedcam = comcameras.getselecteditem().tostring(); if ((selectedcam!= null) && (!selectedcam.trim().equals(""))) { for (JInternalFrame f : despreview.getallframes()) { if (f.gettitle().equalsignorecase(selectedcam)) { return; dsfilterinfo = hashcams.get(selectedcam); graph = new DSCapture(DSFiltergraph.RENDER_NATIVE, dsfilterinfo, false, DSFilterInfo.doNotRender(), this); frame.addinternalframelistener( new InternalFrameAdapter() { @Override public void internalframeclosing(internalframeevent e) { finalizeframe(); ); frame.settitle(hashcams.get(selectedcam).getname()); frame.setclosable(true); frame.setsize(620, 440); frame.setresizable(false); frame.add(java.awt.borderlayout.center, graph.ascomponent()); frame.setvisible(true); despreview.add(frame); JPanel jf = new JPanel(); jf.setlayout(new java.awt.gridlayout(0, 1)); CaptureDeviceControls controls = ((DSCapture) graph).getactivevideodevice().getcontrols(); if (controls!= null) {

for (int i = CaptureDeviceControls.BRIGHTNESS; i < CaptureDeviceControls.FOCUS; i++) { try { jf.add(controls.getcontroller(i, 0, true)); catch (Exception e) { System.out.println("Erro aou inserir controle: " + controls.getcontroller(i, 0, true)); frame.add(java.awt.borderlayout.west, jf); jf.setvisible(true); JButton jb = new JButton("Capturar"); jb.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent evt) { try { Object image = graph.getimage(); JFileChooser jf = new JFileChooser(); jf.setmultiselectionenabled(false); jf.showsavedialog(despreview); if (jf.getselectedfile()!= null) { ImageIO.write((BufferedImage) image, "jpg", jf.getselectedfile()); //ImageIO.write((BufferedImage) image, "jpg", new File("C:/Users/Leandro/Desktop/image.jpg")); catch (IOException ex) { ex.printstacktrace(); ); frame.add(java.awt.borderlayout.south, jb); public void finalizeframe() { frame.dispose(); graph.dispose(); graph = null; despreview.remove(frame); public void propertychange(propertychangeevent evt) { // class FrameApplet

Compile a classe : javac DSJApplet.java Serão criados 4 arquivos.class. Crie um arquivo.jar com os arquivos com os.class gerados. jar cvf DSJApplet.jar *.class Agora para que nosso applet possa ter alguns privilégios quanto ao acesso a recursos nativos do sistema precisamos assinar nosso jar. keytool -genkey -keystore sample.keystore -storepass storepwd -keypass keypwd -keyalg RSA -alias sample_key -validity 360 -dname "cn=samplegroup,ou=sample,c=bebedouro,s=sp,c=br" Com esta linha criamos um storage e uma chave, e é esta que utilizaremos para assinar nosso jar. Em destaque os nomes e as senhas do keystore e da chave.

Assinando o jar. jarsigner -keystore sample.keystore -storepass storepwd -signedjar DSJAppletAssigned.jar DSJApplet.jar sample_key Será solicitada a senha da chave no nosso caso "keypwd". Agora temos nosso jar assinado "DSJAppletAssigned.jar".

Agora crie um html: <%@page contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>dsjapplet</title> </head> <body> <center> <applet code="dsjapplet.class" ARCHIVE="DSJAppletAssigned.jar" width="800" height="600"/> </center> </body> </html> Pronto... execute sua página html e veja o resultado, lembre-se de verificar se o.jar assinado está no mesmo nível de diretório que a página html. Você deve aceitar a exceção de segurança, lembrando que nos mesmos criamos nossa assinatura e não uma empresa certificadora.

Carregando... Selecione a câmera... E voilà!!

É isso ai... FIM Leandro Alves ::: Java Development ::: Bacharel em Sistemas de Informação ::: Pós graduando em Desenvolvimento de Sistemas para Web ::: Sun Certified Java Programmer 5.0 leandroalvesbsi@gmail.com