Foro de elhacker.net

Programación => Java => Mensaje iniciado por: cyberserver en 15 Mayo 2010, 20:32 pm



Título: Manejar WebCam o camaraWeb desde JAVA
Publicado por: cyberserver en 15 Mayo 2010, 20:32 pm
Hola amigos, veran e buscado mucho al respecto y se que se puede hacer con JMF (Java Media Framework) pero no e podido encontrar ejemplos de como hacerlo, las instrucciones que se dan se me hacen muy confusas ya que son pasa manejar aspectos de la camara mas elavorados. pero yo lo unico que quiero es poder ver la camara desde java!!!!

miren aqui esta una de las paginas que le comento, http://www.google.com.mx/imgres?imgurl=http://cmop17.files.wordpress.com/2010/01/snag-0000.png&imgrefurl=http://cmop17.wordpress.com/2010/01/14/&usg=__4c2Xe_PJ3zHynQfT3e07bK2MrA4=&h=631&w=521&sz=256&hl=es&start=1&um=1&itbs=1&tbnid=AiPAP_vE_OvEMM:&tbnh=137&tbnw=113&prev=/images%3Fq%3Dwebcam%2Bdesde%2Bjava%2Bjmf%26um%3D1%26hl%3Des%26safe%3Doff%26sa%3DN%26tbs%3Disch:1 (http://www.google.com.mx/imgres?imgurl=http://cmop17.files.wordpress.com/2010/01/snag-0000.png&imgrefurl=http://cmop17.wordpress.com/2010/01/14/&usg=__4c2Xe_PJ3zHynQfT3e07bK2MrA4=&h=631&w=521&sz=256&hl=es&start=1&um=1&itbs=1&tbnid=AiPAP_vE_OvEMM:&tbnh=137&tbnw=113&prev=/images%3Fq%3Dwebcam%2Bdesde%2Bjava%2Bjmf%26um%3D1%26hl%3Des%26safe%3Doff%26sa%3DN%26tbs%3Disch:1) pero yo apenas comienzo a saber que es JMF y eso me revuelve

Alguien tiene un ejemplo sencillo pero funcional de como hacerlo!!! les agradecere mucho su ayuda!!!


De anetamo gracias  ;-)


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: biribau en 15 Mayo 2010, 21:24 pm
Has probado este code?
http://forums.sun.com/thread.jspa?threadID=247253 (http://forums.sun.com/thread.jspa?threadID=247253)


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: cyberserver en 15 Mayo 2010, 21:51 pm
Sip ya lo havia provado pero me manda 3 errores
Citar
--------------------Configuration: <Default>--------------------
C:\Users\Los_flais\Desktop\Camara\SwingCapture.java:151: warning: com.sun.image.codec.jpeg.JPEGImageEncoder is Sun proprietary API and may be removed in a future release
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    ^
C:\Users\Los_flais\Desktop\Camara\SwingCapture.java:151: warning: com.sun.image.codec.jpeg.JPEGCodec is Sun proprietary API and may be removed in a future release
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                               ^
C:\Users\Los_flais\Desktop\Camara\SwingCapture.java:152: warning: com.sun.image.codec.jpeg.JPEGEncodeParam is Sun proprietary API and may be removed in a future release
    JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
    ^
3 warnings

Process completed.

me manda un error en los codecs o algo asi pero como lo puedo corregir :S


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: cyberserver en 15 Mayo 2010, 23:13 pm
Listoooo ya pude.....eaea uff mi cabezita tuve k entenderle mazo al temaaaa  :rolleyes: y buscar muchos codigos relacionados para armar uno pequeño y simple...

Código:
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.swing.*;
import java.awt.Component;

public class SwingCapture {
public static void main(String[] args) {
// TODO Auto-generated method stu
otro perro=new otro();
perro.show();
perro.proceso();
}
}
class otro extends JFrame{
JLabel Imagen;
otro(){
Imagen=new JLabel();
Imagen.setBounds(30,40,20,20);
add(Imagen);
setBounds(400,400,400,400);
setLayout( null ); // use a BorderLayou
setTitle("Prueba de Camara Web");
}
public void proceso(){
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try{
MediaLocator ml = new MediaLocator("vfw://0");
Player p = Manager.createRealizedPlayer(ml);

Component video = p.getVisualComponent();

video.setBounds(20,30,600,600);
if ( video != null ){
// agragar el video al componente
                add( video);
}
               

p.start();
}catch(Exception e){
e.printStackTrace();
}
}
}



Saludosssss


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: josco en 16 Mayo 2010, 05:17 am
me parece muy interesante tu proyecto, yo estoy haciendo una biblioteca y me gustaria tomar fotos de usuarios desde la camara web de mi lap, podrias subir tu proyecto para echarle un vistaso??? ;D ;D ;D


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: cyberserver en 16 Mayo 2010, 22:46 pm
Eaea. que honda amigos pues ya me aplique y cree una api por decirlo asi muy sencilla de usar :P funciona asi:

Citar
Leame.txt
VIVA atlacomulco

Para poder hacer uso de la api CamaraWeb necesitas tener instalado JMF y tener los .jar en la ruta \Java\jdk1.6.0_17\jre\lib\ext para poder usarlo desde Jcreator o cualquir otro IDE.

Los Metodos dentro son

public Component VerCamara(int x,int y,int alto,int ancho){
Los parametros de este metodo son para colocar el componente resultante en un Jframe


public int Fotografiar(String Carpeta,Boolean NombreAutomatico,String NombreValoNull){
Los parametros son:
   Carpeta: Carpeta donde se crearan las imagenes si no existe la crea si existe la respeta
   NombreAutomatico: false si no quieres colocar un nombre automatico
           true si quieres un nombre automatico(dia-Hora)

   NombreValoroNull: Nombre de la imagen SIN extensión en el caso que se aya dado false en el parametro anterior, de lo contrar         se rellena con null


El codigo de la api es el siguiente
Código:
//Paquetes para guardar imagen (Es necesario tener las apis _JMF_)
//By: CyberServer crow_15@hotmail.com
import javax.swing.*;
import java.awt.*;
import java.awt.Component;
import java.util.Date;
import javax.media.*;
import javax.media.control.*;
import javax.media.util.*;
import javax.media.format.*;
import javax.imageio.*;
import java.io.*;
import java.awt.image.RenderedImage;


class CamaraWeb{
public Component componente=null;
public Player p=null;
public Component video;
public MediaLocator ml;
CamaraWeb(){
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try{
ml = new MediaLocator("vfw://0");
p = Manager.createRealizedPlayer(ml);
video = p.getVisualComponent();
p.start();
    if ( video != null ){
              componente=video;
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Error de Comunicacion con la WebCam " + e);
}
}
public Component VerCamara(int x,int y,int alto,int ancho){
this.componente.setBounds(x,y,alto,ancho);
return componente;
}

public int Fotografiar(String Carpeta,Boolean NombreAutomatico,String NombreValoNull){
Buffer buf=null;
Image img=null;
File imagenArch;
String nombre=null;
String formato = null;
Date HoraDate;
String HoraString=null;
File CarpetaFotografias;


CarpetaFotografias=new File(Carpeta);
if(CarpetaFotografias.exists()==false){
CarpetaFotografias.mkdir();
}
FrameGrabbingControl fgc = (FrameGrabbingControl)
     p.getControl("javax.media.control.FrameGrabbingControl");
     buf = fgc.grabFrame();
     BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
     img = btoi.createImage(buf);
     if (img != null){
     if(NombreAutomatico==true){
     HoraDate=new Date();
     HoraString=Integer.toString(HoraDate.getDate())+"-"+Integer.toString(HoraDate.getMonth())+"-"+Integer.toString(HoraDate.getYear())+
     "-"+Integer.toString(HoraDate.getHours())+"-"+Integer.toString(HoraDate.getMinutes())+"-"+HoraDate.getSeconds();
     nombre=Carpeta + "\\"+HoraString+".jpg";
     }else{
     nombre=Carpeta + "\\"+NombreValoNull+".jpg";
     }
    
     imagenArch = new File(nombre);
         formato = "JPEG";
try{
ImageIO.write((RenderedImage) img,formato,imagenArch);
return 1;
         }catch (IOException ioe){
         return 0;
         }
         }
         return 0;
}
}

Y si no quieres saber de codigo y solo usar el api que tiene que estar adjunto a tu proyecto ya que es un .class aqui descargalo...

http://cybercerver.webcindario.com/APICamara%20Web.zip (http://cybercerver.webcindario.com/APICamara%20Web.zip)

Saludos y viva Atlacomulco:P atte: CyberServer


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: josco en 17 Mayo 2010, 02:53 am
hola cyberserver, entonces como puedo hacer para que se vea la cam en un frame, mira uso netbeans, cree un nuevo proyecto agregue tu clase y un jframe puse un boton y en el codigo le puse:


Código:
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb ver = new CamaraWeb();
        ver.VerCamara(200,200,200,200);
   
    }                 

cuando corro el programa le doy al boton y prende la camara, pero que tengo que hacer para que me muestre lo que esta viedno la camara??

me sale el error:  java.io.IOException: Could not connect to capture device


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: cyberserver en 17 Mayo 2010, 04:15 am
 ;D ;D ;D Bien Facil men mira.

Esta es la firma del metodo para ver la camara...
Código:
public Component VerCamara(int x,int y,int alto,int ancho){

Si ves nos retorna un valor tipo Component..... esto quiere decir que nos retorna un objeto asi como si fuera un Jcommand, un JText etc ;D

lo que tendriamos que hacer es agregarlo al Jframe o Jpanel como si fuera otro objeto.
entonces el codigo para agregar el componente es:

Código:
JFrame.setlayout(null);
JFrame.add(VerCamara(int x,int y,int alto,int ancho));

Claro no esperes que te agregue el panel completo para modificar aspectos visuales, solo te va a agregar el componente de la CamaraWeb y tu ya con las cordenadas que le des pues puedes colocarlo en un lugar para que se vea padre. mira aqui esta el mio con el unico uso de mi clase.

:P espero que te aya servido y cualquier duda hasme saber atte: CyberServer

(http://r.i.elhacker.net/cache?url=http://cybercerver.webcindario.com/FOTODEBICHO.jpg)






Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: josco en 17 Mayo 2010, 19:49 pm
que tal cyberserver, ahora si ya pude hacer que se muestre la camara en un jtext  ;D ;D ;D pero ahora quisiera tomar una foto, ya lo intente pero me sale un error   :-( :-( :-( :-( mira te explico lo que hago:

en un jframe agregue un jtext y dos botones, a un boton le agregue la funcion para que me muestre la camara en el jtext asi:

Código:
  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb ver = new CamaraWeb();
        this.jLabel1.setLayout(null);
        this.jLabel1.add(ver.VerCamara(0, 0, 140, 180));
    }                                       

y al otro boton, segun yo le puse el siguiente codigo para que tomara la foto:

Código:
 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb guardar = new CamaraWeb();
        guardar.Fotografiar("fotosjava", true, "imagen1");
       

    }         

pero al darle a este boton me sale este error:

Código:
 error de comunicacion con la webcam javax.media.noplayerexception: error instantiating class: com.sun.media.protocol.vfw.datasource: java.io.IOexception: capture device in use

ahora la pregunta es, como le hago para tomar una foto y guardarla.

gracias por tu ayuda saludosss  ;-) ;-) ;-)



Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: cyberserver en 17 Mayo 2010, 23:20 pm
 ;D ;D facil, mira para entender este error tenemos que ir al codigo en esta parte.

Código:
CamaraWeb(){
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try{
ml = new MediaLocator("vfw://0");
p = Manager.createRealizedPlayer(ml);
video = p.getVisualComponent();
p.start();
    if ( video != null ){
               componente=video;
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Error de Comunicacion con la WebCam " + e);
}
}


Si nos damos cuenta es un contructor.

Contructor segun wikipedia:
Citar
En java es un método especial dentro de una clase, que se llama automáticamente cada vez que se crea un objeto de esa clase.

Posee el mismo nombre de la clase a la cual pertenece y no puede regresar ningún valor (ni siquiera se puede especificar la palabra reservada void). Por ejemplo si añadiéramos a la clase SSuma un constructor, tendríamos que llamarlo también SSuma. Cuando en una clase no se escribe propiamente un constructor, java asume uno por defecto.
Constructor por defecto [editar]

Un constructor por defecto es un constructor sin parámetros que no hace nada. Sin embargo será invocado cada vez que se construya un objeto sin especificar ningún argumento, en cuyo caso el objeto será iniciado con los valores predeterminados por el sistema (los atributos numéricos a ceros, los alfanuméricos a nulos, y las referencias a objetos a null).

Esto quiere decir que en este se definen e inacializan las variables y metodos que vamos a utilizar a lo largo de  la clase.

En nuestro caso dentro de nuestro constructor CamaraWeb() se inicializa la conexión de la CamaraWeb para con el metodo de VerCamara() se proyecte en un componente.

Entonces ese error aparece por que estas instanciando 2 veces la Clase "CamaraWeb" y en la segunda ves estas tratando de cargar  la camaraweb cuando esta ya esta cargada, es por eso que el error te dice;
Citar
capture device in use


La solucion seria mandar a llamar VerCamara() y Fotografias() en la misma clase.!!! :P y instanciando una sola ves!!!!!! :P

NOTA: con relacio a tu codigo creo que estas tratando de matar moscas a cañonazos en cuestion de los eventos de los botones mira

Tu codigo:
Código:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb ver = new CamaraWeb();
        this.jLabel1.setLayout(null);
        this.jLabel1.add(ver.VerCamara(0, 0, 140, 180));
    }

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb guardar = new CamaraWeb();
        guardar.Fotografiar("fotosjava", true, "imagen1");
       

    }

Cuando podrias sintetisarlo asi:

Código:
clase ejemplo implements ActionListener{

public CamaraWeb ver;
ver = new CamaraWeb();


public void actionPerformed(ActionEvent e){
 
  if(e.getSource()==jButton1){
  this.jLabel1.setLayout(null);
        this.jLabel1.add(ver.VerCamara(0, 0, 140, 180));
  }
if(e.getSource()==jButton2){
                int resultado;
  resultado=ver.Fotografiar("fotosjava", true, "imagen1");
        if(resultado==1){
                    //Se tomo la fotografia
                }else{
                   //Error en la fotografia
               }
  }
 }

}


y asi ya utilizas los dos metodos de la clase CamaraWeb instanciadola una sola ves

Saludos y espero que aya sido claro... saludos atte: CyberServer



Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: josco en 19 Mayo 2010, 05:18 am
bueno, sigo en las mismas  :rolleyes: :rolleyes:, como en la escuela solo nos ensenan a programar en java con netbeans, y no nos ensenan a crear botones desde cero, tengo dudas respecto al ultimo codigo  :-\ :-\, ya le intente de muchas maneras pero no lo puedo hacer jalar.
bueno te explico las dudas:

1.- no se donde poner exactamente este codigo:

Código:
clase ejemplo implements ActionListener{

public CamaraWeb ver;
ver = new CamaraWeb();


public void actionPerformed(ActionEvent e){
 
  if(e.getSource()==jButton1){
  this.jLabel1.setLayout(null);
        this.jLabel1.add(ver.VerCamara(0, 0, 140, 180));
  }
if(e.getSource()==jButton2){
                int resultado;
  resultado=ver.Fotografiar("fotosjava", true, "imagen1");
        if(resultado==1){
                    //Se tomo la fotografia
                }else{
                   //Error en la fotografia
               }
  }
 }

}

donde dice:
Código:
clase ejemplo implements ActionListener{

no es en clase class??

este codigo va en la misma clase CamaraWeb?? o en el jframe?? o donde??

bueno te dejo un video para que veas lo que hago puedes adelantarle al minuto 7:30 es la parte donde termino de matar moscas a canonazos jaja, y empiezo a intentar con tu codigo:

el video lo puedes descargar de aqui: http://www.megaupload.com/?d=3KPBBLV1

pesa como 27 MB

espero no te moleste, ojala y me puedas ayudar saludosss ;D ;D ;D ;D


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: cyberserver en 19 Mayo 2010, 06:08 am
OK MEN ya entendi lo siento si te confundi. por cierto estuvo chido el video se ve que ya te dominas el NetBeans!!!!

Mira segun lo que yo pude ver (corrigeme si me equivoco).

Tus metodos para los eventos del boton los genera automaticamente el IDE pero estos se van agregarndo a tu clase que se llama ventana.java dentro esta tambien el public static void main (String[] args).

Mira el error que te manda mi clase es por k estas instanciando dos veces( instancias es cuando crear un objeto de tipo de la clase CamaraWeb objeto=new CamaraWeb()), por decirlo de otro cuando ases esto automaticamente la clase por medio del constructor inicializa la camaraweb sin que tu te des cuenta pero tu no puedes verla asta que llames al evento VerCamara(), entonces si instancias 2 veces estas cargando una camara web que ya en uso la primera ves.!!! es por eso que te marca ese error de

Citar
capture device in use

Entonces para solucionar este error y juntarlo con tu codigo tenemos que declarar una variable GLOBAL(esta se declara fuera de cualquier metodo y su funcion es k pueda ser accesible desde cualquier metodo de la clase).

Declarar una Variable global:
Código:
class ventana{

public CamaraWeb Ver=new CamaraWeb();

public static void main (String[] args) {

    }

}


en el codigo de arriva declaramos a Ver de tipo CamaraWeb como Variable GLOBAL entonces podremos acceder y hacer uso de ella desde cualquier metodo que este dentro de la clase ventana.

ahora pues. para resolver el problema de tu codigo tendremos que hacer esto.
Código:
class ventana{

public CamaraWeb Ver=new CamaraWeb();
//Es Ver con malluscula la primera no te vallas a confundir abajo

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        this.jLabel1.setLayout(null);
        this.jLabel1.add(Ver.VerCamara(0, 0, 140, 180));
    }

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        int resultado=Ver.Fotografiar("fotosjava", true, "imagen1");
        if(resultado==0){
JOptionPane.showMessageDialog(null,"Error en la Fotografia");
}

    }

public static void main (String[] args) {

    }
}

Y Bingo, con esto resolvimos el dilema de instanciar dos veces a la clase...... viste que solo lo hisimos una ves con el objeto o variable "Ver".....  ;D

Espero haber sido lo mas claro posible, y cualquier duda hasmela saber. atte: CyberServer


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: josco en 19 Mayo 2010, 21:39 pm
gracias men. ya funciona a la perfeccion este es el codigo de la ventana: me sale un warning el declarar:
Código:
public CamaraWeb Ver = new CamaraWeb();
pero ya funciona ;-) ;-) ;-) ;-) ;-)

aqui esta todo el  codigo de la ventana:

Código:
 
package camara;


import javax.swing.JOptionPane;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * ventana.java
 *
 * Created on 18/05/2010, 12:53:18 PM
 */

/**
 *
 * @author Noe
 */

public class ventana extends javax.swing.JFrame {

    /** Creates new form ventana */
public CamaraWeb Ver = new CamaraWeb();

    public ventana() {
        initComponents();

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("                                            ");
        jLabel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        jButton1.setText("ver la cam");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("Fotografiar");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addComponent(jButton1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 206, Short.MAX_VALUE)
                .addComponent(jButton2)
                .addGap(27, 27, 27))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(44, Short.MAX_VALUE)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 301, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(60, 60, 60))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(19, 19, 19)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 218, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        this.jLabel1.setLayout(null);
        this.jLabel1.add(Ver.VerCamara(0, 0, 300, 250));
     
    }                                       

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        int resultado=Ver.Fotografiar("fotosjava", true, "imagen1");
        if(resultado==0){
        JOptionPane.showMessageDialog(null,"Error en la Fotografia");
        }
 
    }                                       

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ventana().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    public javax.swing.JButton jButton1;
    public javax.swing.JButton jButton2;
    public javax.swing.JLabel jLabel1;
    // End of variables declaration

}



y dejo tambien el proyecto en netbeans. lo pueden descargar de aca:

http://www.4shared.com/get/293555022/a77f647f/camara_web_netbeans_proyect.html (http://www.4shared.com/get/293555022/a77f647f/camara_web_netbeans_proyect.html)

gracias por la ayuda cyberserver. ahora si va a quedar bien chido mi proyecto de la biblioteca jaja  ;D ;D ;D


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: cyberserver en 19 Mayo 2010, 22:18 pm
Orale compa ya estas!! que bueno que te aya servidor :P saludos desde Atlacomulco  ;-) ;-) ;-)


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: gochiman en 9 Febrero 2011, 06:42 am
Amigo esta muy bien tu clase... te cuento que yo estoy desarrollando un aplicacion y basicamente hago lo mismo que tu ..pero mi aplicacion difiere un tanto.. yo uso (o pretento usar) varias webcam o fuenets de capturas... el problema viene con JMF registry

Código:

CamaraWeb(){
      Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
      try{
         ml = new MediaLocator("vfw://0");
         p = Manager.createRealizedPlayer(ml);
         video = p.getVisualComponent();
         p.start();
          if ( video != null ){
                  componente=video;
         }
      }catch(Exception e){
         JOptionPane.showMessageDialog(null,"Error de Comunicacion con la WebCam " + e);
      }
   }


pues bien... para manejar varios dispositvos no hago esa asigancion fija al MediaLocator.. sino uso el metodo getDeviceList(Format).... bien esto me funciona pasando como formtao el RGB, pero solo me devuelve una posicion al vector... es decir ; solo ve una camara; y desde el JMF registry al agregar dispositivos y ponerlo a detectar solo me detecta uno-... y claro lo llama vfw:.......:0 = vfw://0 yo necesitaria poder usar el vfw://1 //2 // 3

no se si me he explicado.... yo estoy convencido que el codigo no es el problema sino lo es el hecho que el registry solo me muestra cualquier webcam como un dispositivo vfw://0

en resumidas cuentas... como harias tu para manejar varias camaras? ¿han tenido ese problema antes?  ¿como se puede solucionar?

A: las camaras las reconoce y son compatibles ya que he probado la aplicacion corriendo una sola camara y lo hace a la perfecccion indistintamente de cual este conectada...

Si me pueden ayudar lo agradeceria mill veces he visto cualqueir cantidad de foros y de verdad ya no se como solucionar esto...


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: Nakatsukasa Itero en 23 Marzo 2012, 21:12 pm
he estado viendo su post y a mi jefe le gustó y descargo e implementó la captura de la fotografía con camaras web y java pero dice que en un futuro quiere implementar los sistemas que creamos de tal forma que el cliente no deba hacer pasos extras de instalacion, simplemente el del sistema, entonces se encontró que cada vez que debemos de instalar un sistema tenemos que fijarnos en el sistema operativo para tener los componentes/librerias necesarios, entonces surge la duda en que si hay alguna libreria ue sea multiplataforma :D que no tenga que instalarse, sino que ya vaya (o podamos) empaquetada con el proyecto y que incluso si eso se puede, por medio de un asistene que nosotros empezamos a implementar (como un instalador) solo descargue la aplicacion de la pagina de la empresa y el asistente mismo le instala la aplicacion ya "compilada".

dijo que encontro una libreria con un nombre que no recuerdo que tenia una "L" que segun el leyó la susodicha letra es por Linux, pero no ha encontrado nada parecido o su homónima para Ventanas alguien tiene alguna idea.

por su ayuda en ambas o alguna de las preguntas se los agradezco


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: Proteus1989 en 24 Marzo 2012, 07:32 am
Sabéis porque me puede dar este error cuando se lanza el hilo?

Código
  1. Exception in thread "VFW Request Thread" java.lang.UnsatisfiedLinkError: JMFSecurityManager: java.lang.UnsatisfiedLinkError: no jmvfw in java.library.path
  2. at com.sun.media.JMFSecurityManager.loadLibrary(JMFSecurityManager.java:206)
  3. at com.sun.media.protocol.vfw.VFWCapture.<clinit>(VFWCapture.java:19)
  4. at com.sun.media.protocol.vfw.VFWSourceStream.doConnect(VFWSourceStream.java:241)
  5. at com.sun.media.protocol.vfw.VFWSourceStream.run(VFWSourceStream.java:763)
  6. at java.lang.Thread.run(Unknown Source)


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: Iwan en 1 Mayo 2012, 18:28 pm
Hola, tenía un código muy parecido al tuyo cyberserver pero me aparecía el error "java.io.IOException: Could not connect to capture device" así que he probado a copiar el tuyo literalmente, el caso es que en el momento de la llamada p = Manager.createRealizedPlayer(ml); sigo teniendo exactamente el mismo problema: me salta una ventana con titulo "Origen de video"  y dentro una pestaña que dice "origen de la captura". En ella selecciono la única opción que es el nombre de mi webcam me da la excepción y entonces me salta nuevamente la ventana me vuelve a dar la excepcion y ya salta a la excepción propia del contructor. He consultado ya en mil sitios pero no encuentro solución... alguna sugerencia??

Un saludo y gracias de antemano


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: josco en 1 Mayo 2012, 18:47 pm
Descarga el proyecto que esta para netbeans lo hice yo josco mas arriiva esta. ese deberia funcionar


Título: Re: Manejar WebCam o camaraWeb desde JAVA
Publicado por: Iwan en 1 Mayo 2012, 20:09 pm
No se, es todo muy raro, ahora me sigue dando el mismo error pero parece que traga con él, se abre el JFrame que se tiene que abrir pero en el Jpanel que añado el componente aparece una pantalla rosa. Cuando minimizo el JFrame, en la parte que estaba al Jpanel y sobre cualquier tipo de ventana (escritorio, navegador, otras ventanas, el propio NetBean) aparece una captura de la webCam correspondiente al momento de minimizar la ventana... Dejo el código por si sirviese de ayuda para solucionar esto que me trae ya de cabeza...:

el actionPerformance que llama al Jframe:
    
        
Código:
        private void VideoCamActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        //Se pide el nombre del nuevo directorio. Y se crean los directorios de las
        //distintas emociones en él.
        IODialog entradaSalida = new IODialog();
        String pathBaseDD;
        String directorioFuente = entradaSalida.readLine("Introduce el \n"
                               + "nombre de la nueva base de datos");

        pathBaseDD = CreaDirectoriosBaseDatos(directorioFuente);
        
        // Se crea el objeto        
        VentanaWebCam h1 = new VentanaWebCam();
        // se añade al jDesktopPane
        jDesktopPane1.add(h1);
        h1.SetPath(pathBaseDD);
        //se muestra en pantalla
        h1.setVisible(true);        
    }

la parte del JFrame implicada:

Código:
    public VentanaWebCam() {
        initComponents();
        VideoPanel.add(video.Componente());
    }

La clase que maneja la webCam:

Código:
public class VideoJMF {
    //Controlador universal de windows
    private String dispositivo = "vfw:Microsoft WDM Image Capture (Win32):0";
    private Player player = null;

    public Component Componente(){
    Component componente_video;
        try {
            
            // Se obtiene el dispositivo        
            
            MediaLocator localizador = new MediaLocator("vfw:\\Device\\0000008b");  

            player = Manager.createRealizedPlayer(localizador); //Aqui sale la ventana //que me pregunta por el dispositivo de captura de video y da el error //java.io.IOException: Could not connect to capture device sin embargo ya solo //sale una vez y la aplicacion sigue su curso. Salvo por el problema de la pantallita //rosa :S

            player.start();            
        } catch (IOException ex) {
            Logger.getLogger(VideoJMF.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NoPlayerException ex) {
            Logger.getLogger(VideoJMF.class.getName()).log(Level.SEVERE, null, ex);
        } catch (CannotRealizeException ex) {
            Logger.getLogger(VideoJMF.class.getName()).log(Level.SEVERE, null, ex);
        }
        //Si se pudo crear el PLAYER, se obtiene el componente de video
        if ((componente_video = player.getVisualComponent()) != null) {
                //se da un tamaño al componente
                //componente_video.setSize(320, 240);
                return componente_video;
            } else {
                JOptionPane.showMessageDialog(null,"No se pudo crear el video...");
                return null;
            }
    }

}

Saludos