ARCmop Java Programacion Solaris Linux

Java-linux-programacion

JMF, Usando la webcam desde JAVA y guardando una Imagen

Posted by Cmop en enero 14, 2010

captura-principal

Una de las aplicaciones que siempre ha gustado es poder manipular la webcam,micrófonos, bluetooth, infrarojo y cualquier otro dispositivos que permita comunicacion con el ordenador, en esta ocación presentare como guardar una foto capturandola desde la Webcam, de mi laptop una HP dv4-1425la.

Para lograr este objetivo existe una api especializada diseñada por Sun, que no se proporciona en el paquete del jdk, llamada JMF (Java Media Framework, en español Entorno de Trabajo Multimedia de Java), actualmente en la version 2.1.1e y se puede descargar desde aquí, en ese enlace se explica los pasos para poder realizar una instalación exitosa en Windows, aun no he podida hacer que me funcione en Ubuntu, dicha api también cuenta con un plugin que permite la manipulación de audio en formato mp3

Pero ¿Qué es Java Media Framework?, es una api que permite la programación de tareas multimedias, es decir que puede capturar, reproducir, transferir y codificar varios formatos de medios, así como la retransmisión en tiempo real de vídeo y audio a través de la red mediante el protocolo RTP (Real-time Transport Protocol).

El codigo lo extraje de una pagina a la que mas abajo hago referencia, pero adapte el código para que detectara los formatos disponibles en ordenadores donde se tuvieran cámaras con soporte de color RGB y YUV (como es el caso de la mía), así como las resoluciones permitidas y agregarlas a un menú, en el cual se puede seleccionar dinámicamente el tamaño preferido, y guardar la imagen en formato JPEG, además de mejorar la interfaz, y modularizar el codigo.Adjunto el código del Programa.

El codigo fuente se encuentra aquí, el proyecto ha sido elaborado en netbeans 6.7.

Espero sea de su ayuda, mas adelante extendere las propiedades de esta aplicación, saludos a todos, Hermanos en el Software Libre:

Nota:

El codigo lo extraje de aqui (pero aparentemente esta fuera de linea por mantenimiento), pero eso fue solo la base, tuve que investigar adicionalmente.

ACTUALIZACIÓN 01-06-2010 08:28 PM

Hola a todos, al parecer he encontrado la solución al problema: “Sin dispositivos detectados”, al parecer el porqué cuando ejecutamos desde el jar directamente sin abrirlo desde Netbeans NO detecta ningún dispositivos es porque el programa no puede encontrar el archivo “jmf.properties”, el archivo se encuentra en la carpeta “libs” dentro de la carpeta donde instalamos JMF, debemos copiar este archivo a la raíz de nuestra aplicacion y listo!!! con este paso tan sencillo por cierto, la aplicación corre sin dar el problema.

ACTUALIZACION 08-06-2010  7:10 PM

Me preguntaron como haríamos para poder guardar la imagen obtenida desde la cámara directamente en la Base de datos, pues FÁCIL, jejeje mentira. Esto me ha hecho buscar incluso como poder convertir un OutputStream a InputSream. y pues la manera de hacerlo es muy fácil despues de aplicar el primer método descrito en el enlace.

Lo primero es redefinir el método que guarda la imagen en la Base de datos:

public void guardaImagen(InputStream   fis) throws SQLException, FileNotFoundException
 {
 String sql = "INSERT INTO imagen(Imagen) VALUES (?)";
 PreparedStatement stmt = conexion.prepareStatement(sql);
 stmt.setBinaryStream(1,fis);
 stmt.execute();
 }

Lo segundo es modificar el metodo CapturaFoto() de la clase Dispositivos:

Debemos sustituir:

ImageIO.write((RenderedImage) img, formato, imagenArch);

Por

ByteArrayOutputStream out=new ByteArrayOutputStream();
 ImageIO.write((RenderedImage) img, formato, out);
 InputStream in=new ByteArrayInputStream(out.toByteArray());
 iniciaConexion(); //Este metodo es el que conecta a Mysql
 guardaImagen(in); //Este es el metodo modificado

Listo con esto, ya podrán guardar las imágenes directamente en la Base de Datos, aclaro que inicia conexión debe permitir conectarse a mysql, con los parámetros adecuados.

ACTUALIZACION 14-06-2010  12:24 PM

La solución para poder cambiar la resolución de la Imagen y que no salga pequeña es usar un objeto FormatControl, éste se encargará de asignarle al player la resolución que realmente queremos

 Format []formatos=dev.getFormats();
 FormatControl formatControl = (FormatControl)player.getControl("javax.media.control.FormatControl");
 formatControl.setFormat ((YUVFormat)formatos[0]);

Con esto ya podrán guardar la imagen con el tamaño correcto. Cito el lugar que me ayudó a encontrar la solución: Aqui

Saludos a todos, estoy elaborando una versión mejorada de esta Aplicación que reune lo pedido en esta entrada, es decir conexión a BD, a fichero, tamaño correjido, cerrar el player al salir, etc.

Nos vemos,dentro de un rato Italia vs Paraguay jeje

ACTUALIZACION 02-07-2010  11:16 PM

He mejorado la version del codigo para su entendimiento y he correjido algunas funciones atendiendo a lo que me han pedido aqui.

Este es el enlace

Saludos.

187 comentarios to “JMF, Usando la webcam desde JAVA y guardando una Imagen”

  1. Manu said

    probado en vista 64-bits y va genial, grax men

  2. Gabriel said

    Hola, felicidades x el articulo. Tengo problemas para utilizar 2 webcam ya q solo detecta una. En otros programas de windows si funcionan las 2 perfectamente….

    Algun consejo..? Gracias de ante manos…

    • Cmop said

      Hola, la cámara que me dices que no detecta NO aparece en el listado??, después de presionar el botón “Información”, sino sale allí podría ser que JMF no soporta esa cámara.
      Sería bueno que me copiaras aquí lo que te sale en el JTextArea.
      Saludos.

      • christian said

        cordial saludo tengo un inconveniente cuando pase el programa a ubuntu no detecta ningun dispositivo ni siquiera desde netbeans

  3. Politron said

    Hola amigo, enhorabuena por la aplicacion, yo estoy tratando de comenzar con el mundod e las webcams y hacer una aplicacion de videoconferencia y luego ya veremos.
    El principal problema y muy gordo diria yo es que no me lista la webcam device. Cuando ejecuto el JMF Studio a veces me pilla el device de la webcam y a veces solo los de sonido. En cuanto me pilla la webcam miro la info y a traves del nombre del device lo pongo en mi codigo para recoger ese device especifico: CaptureDeviceManager.getDevice(“vfw:Microsoft WDM Image Capture (Win32):0”) y este siempre me devuelve null
    Alguna idea de lo que puede estar pasando?, uso windows 7 y la webcam esta integrada en el laptor.
    Un saludo!

    • Cmop said

      Hola, lo mismo pensaba hacer, jejeje, es raro que te detecte algunas veces la webcam y otras no, podria ser algun problema con W7, aun no lo he probado sobre ese sistema operativo, si llego a probarlo, te comento si tuve que hacer algun ajuste, saludos.

      • Politron said

        Nada al final era que cuando instale la jfm2.1.1 no tenia activa la camara y no quedo registrada, atiende!!! sinembargo cuando usaba el JMFStudio sinhaberla registrado funcionaba, pero no en mi codigo, me volvi mico.
        en fin, gracias a este bug he conseguido un abssoluto control para capturas devices jejejeje. Ahora a implementar la GUI, creo que la voy hacer con Java FX que nunca me he metido y tiene muy buena pinta.
        Y en cuanto acabe la videoconferencia, deteccion de movimientos jejejejeje!!.

        Oye mantenemos este canal de comunicacion por si nos surgen dudas mutuas ok?

  4. luis j said

    Hola amigo disculpa estoy trabajando en XP Y Seven la aplicacion que muestras aca pero me dice el siguiente error cuando pincho el button ver y los demas x su puesto xfa me podrias ayudar con ese detalle

    Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
    at capturafoto.Dispositivos.MuestraWebCam(Dispositivos.java:126)
    at capturafoto.frmPrincipal.jButton2ActionPerformed(frmPrincipal.java:140)
    at capturafoto.frmPrincipal.access$000(frmPrincipal.java:18)
    at capturafoto.frmPrincipal$1.actionPerformed(frmPrincipal.java:67)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2475)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

    lo que quiero es saber como hacer para capturar la informacion del video y tomar una imagen. guardarla en cierto modo.. Estoy haciendo una aplicacion tipo conferencia y debo enviar video a otras maquinas.. yo ya tengo la captura de video en mi applet solo me falta tomar imagenes como te comente anteriormente para enviar x un hilos.. xfa te agradeceria mucho q me ayudaras con ello… gracias de antemano…

    • Cmop said

      Hola, mira pueden pasar 2 cosas:
      – Que JMF no haya reconocido tu dispositivo.
      – Que si haya reconocido el dispositivo pero que no se llame “vfw:Microsoft WDM Image Capture (Win32):0”, por eso primero debes presionar el boton, Información, si aparece alli algo que diga “Image Capture” entonces si ha reconocido el dispositivo. Si el nombre que te aparece no es “vfw:Microsoft WDM Image Capture (Win32):0” entonces deberias susituir la linea 140 del archivo “frmPrincipal.java”, donde dice misDispositivos.MuestraWebCam(jPWebCam,”vfw:Microsoft WDM Image Capture (Win32):0″,”yuv”); por el nombre del dispositivo que te sale, prueba tambien cambiando “yuv” por “rgb”.

      Saludos, y espero haberte ayudado.

  5. fernando said

    Hola espero todavia revisen esto, no me detecta la camara web de mi lap es una HPdv6220
    no se porque espero me puedas orientas estoy trabajando en un proyecto para unos cursos de java que tomo pero mi maestro nunca ha usado este jmf asi que no me pudo ayudar je espero me respondas

  6. Diego said

    Hola!
    A mi me pasa lo mismo que a Luis J, me tira el mismo error, pero lo raro es que con el jmstudio me muestra que tengo un dispositivo de video que es vfw:Microsoft WDM Image Capture (Win32):0, pero en el programa me dice que no tengo dispositivos conectados, que puede ser?
    Gracias, por el aporte y la ayuda!
    Saludos!
    Diego

    • Cmop said

      Hola, hay algo raro incluso a mi me ha pasado, les comento:

      – Si ejecuto el Codigo desde el Netbeans si detecta los dispositivos, pero si lo ejecuto fuera del Netbeans directamente haciendo doble click en el jar, no me detecta los dispositivos.
      – La única solución que he encontrado es convertir el projecto a .EXE con el Jar2Wizard, y cuando abro el exe que me genera, alli si funciona directamente.
      Vere a que se puede deber y como solucionarlo, por ahora recomiendo, ejecutar el proyecto desde Netbeans, cualquier solución es bienvenida, y si la encuentro la postearé.
      Les adjunto el .exe: CapturaFoto
      saludos a todos.

      • Diego said

        Hola!
        Gracias por tu respuesta, el exe que me pasaste funciona perfecto, pero a mi no me funciona ni desde el netbeans ni desde el jar, sera que le falta alguna libreria o algo a mi netbeans?
        Gracias de nuevo! saludos!!
        Diego

        • Cmop said

          Hola amigo, empezemos descartando.
          1.- Instalaste la JMF??
          2.- Agregaste esto a la variable “path” de sistema: C:\PROGRA~1\JMF21~1.1E\lib\
          3.- Creaste la libreria de nombre JMF en el Netbeans??, de no se asi para crearla debes ir al menu Herramientas–>Bibliotecas–>Nueva Biblioteca–>Y le llamas JMF. Despues la agregas a tu proyecto con Click Derecho en Biblioteca en tu Proyecto–>Agregar Biblioteca y alli buscas “JMF”.
          Deberia quedarte asi: captura

          Por ahora probemos con esto, de no ser asi, me comentas a ver que hacemos.

  7. Oscar Jesus said

    Hola que tal espero que me puedas ayudar estoy haciendo un sistema de venta donde se ingresa un cliente y donde se le tomaria una foto lo hago muy bien con este proyecto pero me gustaria que al momento de tomar la foto y al guardarla me la guarde en una resolucion mas pequeña unos 175 X 200 pixeles pero que lo haga automatico sin darle las opciones de dispositivos ojala me puedas ayudar bueb dia….

  8. Fernando said

    hola Compañeros, necesito la ayudad de ustedes, nesecito hacer una aplicacion, en java con el IDE de Eclipse, donde pueda quitar foto en el actual, guardar, poder consultar si me pueden ayudar le agradeseria mucho.
    Este es mi correo “fernando.benitez1@hotmail.com”

  9. Oscar Jesus said

    Hola que tal espero que me puedas ayudar estoy haciendo un sistema de venta donde se ingresa un cliente y donde se le tomaria una foto lo hago muy bien con este proyecto pero me gustaria que al momento de tomar la foto y al guardarla me la guarde en una resolucion mas pequeña unos 175 X 200 pixeles pero que lo haga automatico sin darle las opciones de dispositivos ojala me puedas ayudar bueb dia….

    • Cmop said

      Hola, el problema que me comentas no he podido solucionarlo, por más que le paso el tamaño de 640 x 480 a mi me guarda la foto en tamano 320 x 240, pense que el problema era que por defecto se me creaba la imagen con esa dimension pero si tu comentas que se crea con otra dimension entonces el porque esta relacionado con la camara pero aun no encuentro de que manera, si logras encontrar la manera de cambiarlo, espero me escribas, yo por mi parte intentare solucionarlo, saludos.

  10. Maria said

    Hola Cmop, ojala puedas ayudarme ya que se ve que sos muy bueno en esto, mira yo baje el proyecto, ya instale el JRM,agrege las librerias y los jar correspondientes..pero no me detecta mi cam, probe las soluciones que dijiste de pasar a RGB y no pasa nada, el JRM detecta correctamente mi cam y el nombre del dispositivo es el mismo que el de tu ejemplo..pero sigo sin conseguir que funcione..lo siguiente es el error que me tira mira:

    Esto me larga cuando click en el boton VER o en el boton CAPTURAR Y GRABAR.

    Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
    at capturafoto.Dispositivos.MuestraWebCam(Dispositivos.java:126)
    at capturafoto.frmPrincipal.jButton2ActionPerformed(frmPrincipal.java:140)
    at capturafoto.frmPrincipal.access$000(frmPrincipal.java:18)
    at capturafoto.frmPrincipal$1.actionPerformed(frmPrincipal.java:67)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

    Cuando presiono el boton INFORMACION me sale “sin dispositivos detectados” y cuando presiono en el jmenu DISPOSITIVOS no me lista nada..evidentemente el problema es que no lo reconoce pero como es posible si cuando abro el JRM STUDIO me anda perfecto?..espero que tengas un tiempito para ayudarme..gracias!

    • Cmop said

      Hola al parecer JMF no tiene registrada tu webcam.
      Te recomiendo ejecutar JMFREGISTRY, y en la segunda pestaña presiona, “Detectar Dispositivos de Captura” y con eso debe detectar tu webcam y ya estará lista para usar.

      saludos y disculpa la demora en la respuesta.

      • dbo said

        Oie soy un poco nuevo en esto, pero ami tambien me manda el mismo error de que no detecta dispositivos:/!. tengo windows 7… y nunca he usado el jmfregistry, como se usa? y donde? es una aplicacion? o que? no encuentro como ejecutarlo :S

  11. Alexzm1 said

    Muchas gracias tengo buscando esta solución desde hace mucho tiempo,
    luego posteo si me funcionó =D

  12. Rafstyle said

    Buenas,

    Esta mal el codigo… en la linea 140 de frmPrincipal.java poner lo siguiente:

    misDispositivos.MuestraWebCam(jPWebCam,”vfw://Microsoft WDM Image Capture (Win32):0″,”yuv”);

    faltan las dos barras ^^. Me tirado 3 horas para averiguar lo que fallaba pero ha merecido la pena.

    Una preguna… se puede usar la captura de imagen los mismo pero en vez de AWT en SWT???

  13. The Boss said

    Graciaasssss! funciona perfecto! ya con tu codigo puedo adelantar bastante mi proyecto!!!

  14. kpishi said

    hola:

    muy bueno el post me funciono correctamente
    pero… si no se han dado cuanto hay una pequeña
    cosita cuando cierras la aplicacion, en este momento se crea un log, un archivo de error
    que no afecta la aplicacion pero que te llena el directorio de archivos “hs_err_pid956.log”
    para solucionarlo esto es lo que hice:

    public void playerclose()
    {
    player.close();
    player.deallocate();
    }

    lo crean en la clase Dispositivos.java y lo llaman desde frmPrincipal
    lo que hace es cerrar todo antes de salir

    “un pequeño aporte que espero les sirva”🙂

  15. maria said

    hola, no logro hacer funcionar el proyecto..me pueden ayudar!!…con que estan trabajando?..yo con netbeans 6.1

  16. Yesi said

    hola amigo me gustaria saber, como haria para guardar la foto capturada directo a la base de dato mysql

  17. Oscar said

    Hola, abri el proeycto con Netbeans 6.8, agregue el jar y las librerias, al darle debug proyect me abre el programa pero me arroja esto
    Non-existing path “C:\Users\Leonel\Documents\NetBeansProjects\CapturaFoto\${libs.JMF.classpath}” provided.
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_15\jre\lib\sunrsasign.jar
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_15\jre\classes

    despues le don info, aparecen los dispositivos, le doy en ver y el programa se traba,

    me voy a archivo capturar y guardar y me manda este error

    Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
    at capturafoto.Dispositivos.CapturaFoto(Dispositivos.java:158)
    at capturafoto.frmPrincipal.jMenuItem2ActionPerformed(frmPrincipal.java:148)
    at capturafoto.frmPrincipal.access$200(frmPrincipal.java:18)
    at capturafoto.frmPrincipal$3.actionPerformed(frmPrincipal.java:112)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2475)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

    Revise y mi dispositivo si se llama como default espero me puedan ayudar gracias

  18. cheche said

    Hola… tengo el mismo problema de Oscar, me sale exactamente lo mismo aunque el JMStudio si me reconoce la webcam
    Trabajo con una camara integrada al pc y windows 7. Si pueden ayudar se agradeceria.

  19. Cmop said

    Hola, he reproducido el error de Oscar y CheChe, y al parecer el error es por problema de referencia, debido a que el proyecto se creo con una Biblioteca llamada “JMF”.
    Para crearla deben ir a: Herramientas–>Biblioteca–>Nueva Biblioteca–> le ponen de nombre JMF–> agregan los archivos JAR de la carpeta “lib” que esta dentro de donde instalaron JMF.
    Al parecer ese esa es la solución al problema, espero sus respuestas.

    saludos.

  20. Cmop said

    Hola a todos, al parecer el porque cuando ejecutamos desde el jar directamente sin abrir Netbeans,NO sale nada es porque el programa no puede encontrar el archivo “jmf.properties”, el archivo se encuentra en la carpeta “libs” dentro de la carpeta donde instalamos JMF, debemos copiar este archivo a la raíz de nuestra aplicacion y listo!!! con este paso tan sencillo por cierto, la aplicación corre sin dar el problema “Sin dispositivos detectados”

    • Creo que esa es mi solucion pero en un swing lanzado por jnlp donde se instala la clase para pasarle el jmf.properties???

      • Cmop said

        Buen punto, pienso que podría hacerse agregando el archivo jmf.properties como un recurso asi:
        http://forums.sun.com/thread.jspa?threadID=5438671
        Pero el problema persisitiría debido a que necesitamo el archivo jmf.properties, adecuado para la PC.
        Una opcion podría ser generar el jmf.properties desde java, pero ¿como?, me quedare pensando en esto. Si encuentras la solucion me comentas como te fue.
        saludos.

      • Cmop said

        Hola he hecho un descubrimiento jeje, me he dado cuenta que el JMFInit.java tiene el codigo necesario para detectar los dispositivos sin necesidad de tener el archivo jmf.properties.
        Hice la prueba eliminando el archivo jmf.properties de la carpeta “lib” y compile y ejecute el JMFInit.java y reconoció los dispositivos sin problemas!!!
        Esa me parece la mejor opción, veré de que manera se puede implementar.
        Saludos, hasta la proxima.

        • Oscar said

          Hola, en primer lugar te agradezco este tutorial q me ha ayudado grandemente con mi problema de capturar una imagen desde una webcam. Espero que aun estes prestando atencion a esta pagina y no te moleste contestar a un lego en esto. Tengo el mismo problema que Daniel Perez, lanzo mi app desde jws. Intente meter el jmf.properties dentro del jar de la app y no lo logre y tampoco poniendolo dentro de otro jar para que se deployara. Como resolviste ese punto. Estuve buscando, pero todos los links estan caidos.
          Hablaste del jmfinit y creo que esa seria la mejor solucion. Pudiste averiguar algo mas al respecto?

          Desde ya muchas gracias.

  21. cooljsh said

    ola CMOP muy bueno tu artikulo … me funciono de maravillas, pero ahora quiero hacer la siguiente tarea, basandome en tu codigo, como hago para hacer la deteccion de movimiento ?? por ahi lei que el api del JMF no tenia integrado esa funcionalidad y lo que se tenia k hacer era analizar pixel x pixel, y bueno analizando tu codigo me parece que el frame del webcam se captura en esta linea de codigo:

    Component comp;
    if ((comp = player.getVisualComponent())!= null)
    {
    // mostramos visualmente el reproductor
    panelCam.add(comp,BorderLayout.CENTER);
    padre.pack();
    }

    entonces yo dije, ese comp deberia tener algo como un comp.getBytes o algo que me devuelva los pixels pero no he encontrado nada al respecto. quisiera que me des alguna idea como poder hacerlo. Gracias saludos desde Lima Peru 🙂

    JS

    • Cmop said

      Hola, muy bueno lo que pides, pero hago la corrección que el lugar donde se captura la imagen es en el método CapturaFoto, basicamente en las lineas.

      FrameGrabbingControl fgc = (FrameGrabbingControl)        player.getControl("javax.media.control.FrameGrabbingControl");
      Buffer buf = fgc.grabFrame();
      // creamos la imagen awt
      BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
      img = btoi.createImage(buf);
      

      He visto en la red que han hecho una implementación de Deteccion de Movimiento usando JMF, que se llama JVigilancia (http://jvigilancia.sourceforge.net/), BarkIDS (http://barkids.forge.os4os.org/), ambos bajo licencias Libres (LGPL),es decir en el código fuente se tiene una base para empezar, pero es motivo para otra entrada. Veré si hago una entrada al respecto.
      Saludos

      • cooljsh said

        ola, a ese metodo accedes siempre y cuando selecciones “Capturar y Guardar” , pero para la deteccion de movimiento deberia ser la imagen que sale al poner “Ver”, es decir dentro del metodo “Muestra Webcam” ya que la deteccion de movimiento no lo vas hacer sobre una sola foto sino sobre lo que muestra la webcam … bueno es lo que a mi me parece :S … de todas maneras comenzare a analizar esos proyectos que me mencionas.

  22. cooljsh said

    ola d nuevo :S hasta ayer estaba funcionando todo bien (la webcam con tu programita) , pero me baje el jvigilancia, lo instale y ya no m detecta la webcam ni en el jvigilancia ni con tu programita :S y la webcam si esta funcionando porque si funciona con el msn o con su programita…. como lo soluciono?? espero me ayudes :S

    • cooljsh said

      ah! y porsiaca me sale un error de NullPointerException en la linea 126 (MediaLocator loc = dev.getLocator(); ) de la clase Dispositivos, por alguna razon el jmf ya no esta detectando mi camara😥 y porsiacaso copie el jmf.properties a la raiz de la aplicacion pero nada 😦 jelppp

      • Cmop said

        Hola creo que debes ejecutar el “jmfinit” que se encuentra dentro de la carpeta “bin” este es el encargado de descubrir los dispositivos multimedia que se encuentran en tu sistema. una pregunta ¿seguiste los pasos de la web de jvigilancia para instalarlo?
        saludos

    • Cmop said

      Hola, no se si hayas visto este video pero me ha parecido excelente!!

      Ademas encontre esto: http://darnok.org/programming/motion-detection/

      Esto ha picado mi curiosidad,jejeje saludos y espero me comentes tus resultados.

  23. Gracias por el aporte sinceramente me has ahorrado varias horas de investigacion en la web he estado haciendo pruebas por que necesito almacenar fotos en una base de datos y casi todo ha estado bien slo tengo dos cosas
    la primera en donde evitas que se abra la ventana que pide el nombre del archivo a guardar cuando substitulles el codigo para meterlo en una bd y el segundo punto yo estoy usando postgres y primeramente estaba usando un tipo de dato oid pero para la salida ImputStream me sugiere que use un tipo de dato bytea pero tengo que usar el siguiente codigo

    PreparedStatement pst = db.getCon().prepareStatement("UPDATE DATOS_PERSONALES SET FOTO_CREDEN=? WHERE ID=?");
    pst.setBinaryStream(1, fis, imglg);

    y para obtener el imglg trato de leer del metodo capturaFoto el valor de alguna de las variables File que tienes pero en ambas me envia 0 y nomas no puedo al guardar me dice que son zero los bits guardados y ahi me atoro
    gracias

    • Cmop said

      Hola, responderé a tu primera pregunta, para eliminar que te pida el nombre del fichero debes comentar las lineas 178 – 191 y la 205 (este es una llave de cierre).
      Con respeto a tu otra pregunta cuando guardas en la BD sin abrir desde un fichero debes invocar al metodo setBinaryStream(X,X) usando solo 2 parámetros, ya que el tercer parámetro de setBinaryStream(X,X,X) sirve para especificar el tamaño de la foto, y como estamos usando un Stream no conocemos el tamaño por eso usamos el metodo que solo requiere 2 parametros.
      Es por ello que si tu pasas en el tercer parámetro 0 (asi me comentas que sucede) pues no guardarias nada en la BD.
      Espero haber respondido a tus preguntas, cualquier cosa me escribes.
      saludos.

  24. […] a todos, después del post de https://cmop17.wordpress.com/2010/01/14/jmf-usando-la-webcam-desde-java-y-guardando-una-imagen/ me sugirieron algunas cosas tales como Redimensionar adecuadamente la webcam, guardar la imagen en […]

  25. Muchas gracias he hecho muchos descubrimientos a partir de esta pequeña pero gran aplicacion dado que tenia un conflicto de tipo de datos tome el toro por los cuernos y lo amarre.
    Problema tengo una base de datos ya fija entonces tenia muy poco para donde correr, la bd una postgres y el tipo de datos es OID asi que consultando la documentacion pude llegar a algo me tope con el problema de querer cachar la imagen y meterla a la bd sin pasar por el paso de crear un archivo y de ahi leerlo para meterlo a la bd pero no se pudo entonces yo nombro internamente el archivo y de ahi lo leo y lo meto a la bd ya puedo desplegarlo y sin problemas

    ahora me topo con otro problema y es al poner en una aplicacion web recurri al java web start y cree un archivo jnlp para arrancar la aplicacion y todo al parecer esta bien solo que no detecta dispositivos, intente ponerle que cargara el jar de jmf pero ni aun asi, lo peor de todo es que la prueba es en la misma maquina donde estoy trabajando solo la diferencia es que cuando la aplicacion si funciona es lanzada por netbeans y cuando no funciona es cuando la lanzo desde el jnlp espero haberme explicado y aunque se que estamos fuera de tema quiza puedas ver lo que yo no

    nuevamente gracias por la respuesta y si fue de utilidad

    • Cmop said

      Cuando no se puede ejecutar fuera de netbeans es porque no encuentra el archivo jmf.propiertes, este archivo debes copiarlo en el directorio donde tienes la clase.
      Este archivo se encuentra en la carpeta “libs” dentro del directorio de instalacion.
      saludos y espero esto te ayude.

      • Coloque en el jar el jmf.properties y aun asi en monitod de java me dice que no puede abrir los dispositivos
        el error en el monitor de la maquina virtual es
        Reading certificates from 11 http://localhost:8080/GymManage/CapturaFoto.jar | C:\Users\Daniel\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\42\6e5801ea-3a90807e.idx
        Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
        at capturafoto.Dispositivos.MuestraWebCam(Dispositivos.java:133)

        dicha linea es

        CaptureDeviceInfo dev = CaptureDeviceManager.getDevice(dispositivo);
        //obtengo el locator del dispositivo
        MediaLocator loc = dev.getLocator(); //linea 133

        igual y sea la solucion la que dices pero aun no se deja conmigo acepto sugerencias

        • Cmop said

          De es manera no funciona, el archivo debe estar como un archivo separado, otra posibilidad puede ser que haya alguna falta de configuracion en los permisos, no se meocurre nada mas.
          saludos.

    • Cmop said

      Hola para tu problema con el JNLP, revisa este enlace: http://www.dutchie.net/jmf/example/webstart/default.htm, es un ejemplo que se encarga de instalar JMF y la aplicacion, saludos y espero sea de tu ayuda.

  26. santiago said

    hola che keria saber como hacer para agregar la biblioteca JMF, pasa q nunca trabaje con esto y no es como las otras bibliotecas q son faciles d agrgar ya q son .jar . Tengo el netbeans 6.8

    gracias

  27. […] a raíz de este comentario que me hicieron en un anterior post aqui, en el cual me preguntan como podría hacerse para […]

  28. Jovani del Boque said

    Hola la verdad es muy buen aporte tarde mucho para hacerlo funcionar en mi maquina pero alfinal todo bien….
    yo lo corri bajo windows 7 de 64 bits y todo salio bien solo hay que hacer las cosas bien y ya!!!!

    Muchas gracias amigo….

    • Cmop said

      Hola te recomiendo mi post donde mejoro el codigo y la funcionalidad: https://cmop17.wordpress.com/2010/06/16/jmf-usando-camara-desde-java-y-guardando-imagen-en-archivo-o-bd/
      saludos

    • Marisol said

      Porfavooor, necesito de su apoyo, estoy utilizando el jmf, en las computadoras de 32 bits no tengo problema pero en las de 64 bits, se ejecuta el player, pero no se ve la imagen dice un error de “unload handle format: mpeg, 640 X 480, framerate : 25.0, length =460 800 Unload handle, : mpgaudio, 32000 khertz, 1çbits, mono, little envian, signed, 8000.0 framerate, framesize 16384 bits”
      ya intente correr la aplicacion con plataforma JDK1.6, pero no tuve exito, ojala alguien puediera ayudarme gracias. ?), la aplicacion de jmf queda instalada en Archivos de Programa x86, y solo agrego el jmf.jar, le comento esto por si sirve de algo

  29. Mandres said

    Buenas buenas, me encanto este post!, pero lo he probado desde todos los lados posibles, inclusive con 5 camaras web de distintos fabricantes, he recompilado y regenerado la aplicacion, tanto en ambiente Windows ( Windows XP SP3 ) como en Linux ( Ubuntu 9.10, Ubuntu 10.04 ) y no he tenido exito.

    En ningun caso ni me ha detectado el dispositivo desde la aplicacion.

    Aclaro además, que usando otras herramientas (Messenger, Cheese de Linux, otros mas), me reconocen sin problemas mi camara web

    Cual podria ser el problema?

  30. Pedro said

    Hola, excelente tus aportes, pero queria saber como guardar el video que se transmite de la camra web. Gracias

  31. juan said

    Hola, muy buen post. Como podria hacer para seleccionar un área de la imagen? Saludos

  32. juan said

    Hola, este codigo solo sirve para camaras web integradas a las laptop o tambien puede servir para las que vienen con puerto usb?

  33. Ove said

    Hola!
    Lo primero gracias por este PEDAZO DE CODIGO que me ha ayudado enormemente en mi proyecto de finde carrera ya que estoy aprendiendo Java por mi cuenta para hacerlo y me he vuelto loco buscando cosas… hasta que encontré esto!

    Mi problema, que creo que es común a varios por aquí pero con las respuestas que he visto no he podido solucionarlo, es que no me reconoce la webcam. Creo que el problema estará relacionado con que utilizo W7(64bits) en el portatil ya que en el ordenador viejo de sobremesa con Windos XP si me reconoce la webcam.
    Ahora, tras mucho esfuerzo, he conseguido que en el JMFStudio si que aparezca al buscar dispositivos, pero al ejecutar el programa en el NetBeans nada de nada :S
    En concreto, getDeviceList no me devuelve nada😦

    Espero me puedas echar una manita con ello😉
    Muchas gracias!!

  34. Gorka said

    Hola tengo que hacer una videoconferencia desde Linux a Windows . He probado utilizar la librería JMF pero no consigo que se detecte ningún dispositivo en Linux. ¿ Sabéis si la librería JMF se puede utilizar en Linux ?
    MUchas gracias
    Gorka

  35. Jovani del Boque said

    Hola Amigo tu aporte esta muy bien FELICIDADES!!!!!
    oye podrias ayudarme a capturar video con java un .avi por ejemplo de antemano muchas gracias….
    y gracias por los aportes sirven de muchooo,, sigue asi!!!!

  36. anemix said

    Hola!

    Muy bien muchas gracias por que me ayudo muchísimo para un proy que tengo.

    Sldos

  37. anemix said

    Ah y otra cosa perdon!
    Nos puedes guiar para establecer comparaciones entre imágenes. La idea es detectar cosas muy precisas entre ella….. Agradecería tu ayuda.

    Sldos

    • Cmop said

      Hola, gracias por tu interes, pero en cuanto a algoritmos de imagenes, como los que tu me dices, comparacion y eso, mis conocimientos son nulos, he sabido que hay librerias para hacer ese tipo de cosas, pero aun no he probado nada.
      saludos.

  38. redg said

    HOLA E MODIFICADO TU CÓDIGO PARA HACERLO UN APPLET Y PONERLO EN UNA CÁMARA WEB, EN EL NETBEANS SI CORRE MUY BIEN PERO A LA HORA DE METERLO EN UNA PÁGINA NO, ME MARCA QUE NO ENCUENTRA LOS DISPOSITIVOS, ¿ME PODRÍAS AYUDAR?, DE ANTEMANO MUCHAS GRACIAS POR TODA LA AYUDA, ES QUE NECESITO VISUALIZAR LA CÁMARA REMOTAMENTE.

    TE MANDO MI CORREO ALTERNO ss_hady@hotmail.com

    • Cmop said

      Eso es algo mas complicado, si quieres hacerlo en un applet, mis pruebas fueron solo locales, pero el appler no se conectaba a la webcam, sino a un servicio levantado en java que emitia las imagenes, y ps lo podia ver desde otras pcs de mi red, pero no llegue a hacerlo funcionar a traves de WAN, se me ocurrio usar servlets asi como LTI-CIVIL, que permite una secuenciacion mas controlada, asi como mayo compatibilidad de dispositivos.
      saludos

    • Cmop said

      Eso es por problemas de permisos, cuando instalaste el JMF debiste marcar el ultimo check que es para “Allow Applet …” permitir a los applets acceder a los dispositivos, saludos.

  39. redg said

    perdón en una página web*

  40. Jaime said

    Estimado … he leído el post y me parece muy interesante, lo probé en el laptop y la cámara integrada funcionó de maravilla con el ejecutable EXE que posteaste. Primero que todo te felicito!!!.

    Ahora tengo una consulta, lo has probado con imágenes de una capturadora de video de varias entradas, estoy intentando hacer un programita que me una varias cámaras análogas de video, de ahí la consulta.

    Saludos … gracias por el excelente aporte !!!

  41. McNano said

    Hola otra vez, pues te escribo con el fin de que me facilites el codigo, para probarlo aunque sea de manera local, para realizar algunas pruebas. Si no es mucha molestia.

  42. McNano said

    si gracias, soy redg, soy quien te comentaba, para hacerlo funcionar en una pagina web via applet. Gracias

  43. Marthica said

    Hola Cmop

    En Horabuena por tu publicación.

    Te cuento que baje el código que tienes en tu página, lo ejecuté en Netbeans 6.9.1 y me funcionó a la perfección.

    Pero tengo un pequeño problema, al copiar el código en mi aplicación, en un nuevo formulario, no me funciona, me dice que Sin dispositivos detectados

    Es más, pasé tus formularios tal y como los tienes en tu página a mi aplicación y me dice lo mismo.

    No se que podrá ser.

    Me podrías ayudar?

    Muchas gracias por tu aportes.

    Un abrazo

    • Cmop said

      Hola, lo que puede pasar como comente anteriormente es que no tienes acceso al archivo “jmf.properties”, lo que puedes hacer es ubicarlo y copiarlo en la raiz de tu aplicacion, en mi caso se ubica en “C:\Program Files\JMF2.1.1e\lib”, copialo en la raiz de tu App y con eso debe funcionar.
      Saludos, espero tu respuesta.

      • Marthica said

        Hola Cmop

        Muchas gracias por tu pronta respuesta…..y mi problema se ha solucionado.

        Faltaba agregar las librerias a mi aplicación, yo las había mirado por herramientas-librerías y ahí estaban…pero no las había agregado a mi formulario.

        Un abrazo,

  44. Dr. da Vinci said

    Hola, me funciono bien. Pero tu crees que se le pueda implementar un filtro de imagenes como sobel?. O si tienes algun comentario te agradeceria. Gracias.

  45. Yeiner said

    Tio está genial justo lo que necesito, pero tengo un problema no me detecta la camara o bueno no me sale la imagen cuando le doy en el menu DISPOSITIVOS, me urge la ayuda, ya copie el archivo de JMF.properties. Mi Laptop no viene con webcam incluida asi que le e conectado una via usb tiene que ver eso?

  46. Yeiner said

    Cmop alguna idea de como guardar el video que se captura por la web cam???

  47. yeiner said

    cmop lei lo que explicabas que jmf no puede trabajar en 2 hilos a la vez (por ejemplo visualizar y grabar) queria preguntar si me das alguna ayuda con capturar la imagen pero guardarla automaticamente con un nombre X. Gracias por la ayuda😉

  48. Ervin said

    Hola Cmop estoy desarrollando una aplicación para la uni la cual consiste en realizar una videoconferencia en una intranet el cual es mi proyecto de fin de carrera, he probado tus codigos y excelente lo unico que tuve un problema al inicio el cual fue que no me corria ningun programa debido a que no me reconocia ningun dispositivo a la hora de la ejecución, esto lo solucione de la siguiente manera, desintale el JMF y el Netbeans, luego instale primero el JMF y luego netbeans 6.9.1 y me funciono muy bien, yo lo ejecute en win7 64 bits, ahora yo tengo una pregunta y espero me puedan ayudar y es que como hago para poder transmitir y recibir audio/video por medio de una aplicacion y si esto puedo implementarlo desde un portal y ahi realizar el alta de usuarios.

  49. Ervin said

    Hola Cmop yo tengo pensado realizarlo utilizando un servidor de streaming como RED5 pero no se si esto se pueda. Ahora si lo hago asi como hago para poder colocar el codigo en una pagina. Ayuda por favor he estado buscando como hacerlo pero solo he visto que lo han hecho con flash pero yo lo necesito en java.

  50. Matias said

    Gracias por el codigo, me solucionaste un problema que tenia para implementar un sistema!!!

    se agradece la colaboracion.

  51. Ariel Ruiz said

    Hola, que tal?? escribo para decirte que el codigo me re sirvio! el tema esq la cam web, el tomar la foto y guardar los datos en archivos y base de datos anda muy bien solo cuando lo ejecuto en el netbean al programa que desarrolle!
    El problema esta cuando lo ejecuto desde el jar. Abri la consola para ver que lo q anda mal y me tira el error Dispositivos.MuestraWebCam (en la linea 68 tengo MediaLocator ml = CaptureDeviceInfo.getLocator();)
    Por otro lado me baje el programa jar2exe wizard (converti el jar en exe) y aca en el exe si funciona bien la cam web. Pero cuando quiero utilizar las acciones que consulta o inserta info a la base de dato, no funcionan directamente! Mi duda esta si el problema se debe a que el programa no esta registrado pk tiene el periodo de 30 dias o me estara faltando algo con respecto a la BD.
    Espero tu respuesta!!😀

  52. roberto eloy valerio severino said

    hola que tal!!
    disculpen sera posible que me puedan mandar el codigo completo para poderlo probar!!
    soy nuevo en esto y no comprendo mucho de esto!!
    espero me puedan ayudar!!
    Gracias!!

  53. nestor rojas said

    hola probe el codigo y funciona bien pero como hago para que la web cam hago un stop cuando toma la foto es decir que detenga la imagen capturada,saludos

  54. SURATEC said

    BUENAS TARDES DISCULPA PROBE EL CODIGO BAJA EL JMF PERO AL INSTALAR EL JMF ME DA ERROR EN LA LIBRERIA Y SI LO DESINTALO NO HAY PROBLEMA PERO NO ME VE LA CAMARA WEB SI ME PUEDES AYUDAR GRACIAS😉

  55. AngelByte said

    Hola amigo, estoy realizando un proyecto parecido al tuyo que se trata de una aplicacion web con reconocimiento de rostro, y vaya que la informacion que das es muy importante para mi proyecto; es mas si deseas podemos compartir informacion, ah investigue sobre un proyecto en java que trata de implementar esto, el nombre del proyecto es faint aqui esta el enlace espero sea de tu agrado http://faint.sourceforge.net/, si deseas contactame por el correo

  56. Jose Martinez said

    HOLA, HE HECHO ALGUNAS APLICACIONES EN NETBEANS SOBRE ACTIVAR MI WEBCAM Y VERLO EN PANTALLA, TAMBIEN SOBRE CAPTURAR IMAGENES Y ME APOYE UN BUEN EN TU PROGRAMA, AHORA LO QUE INTENTO ES CAPTURAR EL VIDEO DE LO QUE SE MUESTRA EN PANTALLA, PERO LA VERDAD NO ENCUENTRO MUCHO EN INTERNET Y TODO ME MARCA ERROR, ME PODRIAS AYUDAR UN POCO SOBRE ESTE TEMA DE GUARDAR VIDEO CON JAVA UTILIZANDO MI WEBCAM?.

    SALUDOS.

  57. Jesus said

    Hola, baje tu codigo, lo puse en netbeans 6.9.1 sobre ubuntu 10.10.
    con cheese mi camara funciona, pero con tu aplicación no detecta ningun dispositivo.
    Que puede suceder???

    Gracias

  58. yiyocas said

    Probe tu codigo esta a la perfeccion pero no logro comprender solo me gustaria saber que metodos y class son necesarias tener para tomar una foto simple del mismo tamaño. Esto es que necesito agregar esa parte a aun codigo que yo a he hecho espero puedes contestar pronto. mi correo yiyocas@hotmail.com

    ocupacion : Estudiante

    • Cmop said

      Hola, todos los metodos mostrados son los que necesitas, desde los que detectan la camara, los que obtienen el flujo, el que captura la imagen, y los que duardan en la BD, asi como los que retornan, eso esta en los comentarios mi amigo.
      saludos

  59. Fernando said

    Hice una aplicación en java con puertos seriales y me funciona correctamente en netbeans, pero a la hora de ejecutar el jar no me deteecta el dispositivo con el que estoy traajando
    tengo un archivo properties de javaxcomm pero no lo puedo agregar al proyecto y si lo copio donde se encuentra el jar tampoco funciona, me podrían ayudar?
    soy nuevo en esto y lo necesito para antes del lunes :S

  60. Gustavo said

    ola amigo!! oye yo estoy haciendo un programa de una nomina donde me registra todos los empleados con referencia una foto pero no ce como hacerlo de la cam por que todo lo estoy haciendo en ubuntu !! y creo q x eso no me detecta lo de la cam y no ce como hacerle !! espero y me apoyen!! gracias..

  61. christian said

    hola como estas

    -lo primero felicitarte y darte las gracias pos me ha sido de utilidad

    -lo segundo tengo un problema al ejecutarlo desde el .jar

    al ejecutarlo desde netbeans me sale el mensaje
    camara detectada:
    direct sound capture
    JavaSound Audio capture
    vfw:Microsoft WDM Image Capture (Win32):0″,”rgb

    y trabaja de forma excelente

    cuando lo ejecuto desde el .jar despues de agregar el “jmf.properties”
    me sale

    camara detectada:
    direct sound capture
    JavaSound Audio capture

    y no detecta la cam

    • Cmop said

      hola. debes copiar el archivo jmf.properties en la misma carpeta del ejecutable, saludos.

      • christian said

        muchas gracias por tu respuesta.
        en mi caso ya he copiado el archivo “jmf.propieties” en la carpeta dist a lo cual me detecta dispositivos de audio
        pero no la cam, pero cuando lo ejecuto desde netbeans si es decir si aparece el dispositivo vfw:Microsoft WDM Image Capture (Win32):0″,”rgb”.
        espero me puedas ayudar nuevamente muchas gracias.

  62. christian said

    no logro que funcione en ubuntu

  63. abenaulise said

    oye ha chekado tu codigoo, soy alumno de Unach en Tapachula chiapas, actualmente estamos haciendo un proyecto con lector de huellas y camara incluido, el codigo que tienes para guardar la imagen es muy parecido al que tengo “ImageIO.write((RenderedImage) img,formato,imagenArch); ” , pero lo que aun no me ha quedado es la parte endonde extraigo la foto, el nuestro esta hecho para guardarlo en una carpeta pero no lo puedo sacar de esa carpeta, solo la almacena, espero tu respuesta, porfabor..
    Necesito extraerla…

    • Cmop said

      pues la apertura es simplemente asi:
      Image miImagen = (Toolkit.getDefaultToolkit()).getImage("tuimagen.jpg");
      ya teniendo el objeto “miImagen” puedes colocarla en los componentes Swing que permiten imagenes.
      Si quieres colocarla en un JLabel una manera directa sería:
      JLabel miLabel= new JLabel();
      miLabel.setIcon(new ImageIcon("tu imagen"));

      Saludos

  64. jorge said

    el cfmts[i].getEncoding() es MJPG entonces tamanios queda null y me da
    Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1045)
    at java.awt.Container.add(Container.java:365)
    at javax.swing.JPopupMenu.add(JPopupMenu.java:264)
    at javax.swing.JMenu.add(JMenu.java:562)
    at capturafoto.Dispositivos.detectarDispositivos(Dispositivos.java:115)
    at capturafoto.frmPrincipal.(frmPrincipal.java:25)
    at capturafoto.Main$1.run(Main.java:20)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

  65. noe del angel herandez said

    oye tengo un problemita
    al crear al .jar desde en netbeans me crea el .jar con las librerias que utiliza y al tratarlo de ejecutar no me aparece nada, leyendo y viendo tus app veo que tambien contiene el jmf.properties y en el mio no trae eso como le puedo hacer para agregarselo o para crear bien el .jar

  66. Leonardo HH said

    holaa gracias por compartir esta maravilla de api
    solo me gustaria que me ayudaras no logro poder insertar en la Base de Datos
    espero y aun revises esto y me puedas ayudar……………………………

  67. jesus aquino said

    Hola buenas tardes amigo, muy buen post, te felicito, lo he probado pero necesito que me orientes en cuanto a una plicacion que esotyy desarrollando de tomar fotos, eso implica que si por ejemplo al usuario no le gusto como quedo la foto capturada como haria para volver a reiniciar nuevamente la cam, como haria para que se mantenga estatica la imagen y guardarla, y como haria para que el panel en donde se ve la imagen quede en blanco nuevamente, gracias y saludos agradezco su ayuda. mi correo jaquinox@hotmail.com

  68. Samiro said

    Hola,
    Te agradezco mucho por el aporte. Es de gran ayuda para muchos.
    Pero tengo una pregunta para ti. he querido hacer ke a la hora de tomar la foto a parezca un contador, un simple label que cuente hasta 5 y cuando termine tome la foto. Lo hize y quedo muy bn. Pero quize poner el label encima de la video camara. Y pss simplemente arrastre el label al panel donde aparece la video camara, pero apesar de que no le tengo fondo al label aparece con fondo lo he puesto opaque(false) pero nada. Tambien he intentado dibujar sobre el panel donde aparece la video camara, y dibujar el 1,2,3.. con el drawString pero tampoco lo he conseguido.. agradeceria inmensamente tu respuesta respecto a esto…..

  69. Leonardo said

    saludos CMop quisiera saber como se podria integrarle una JTextField a esta maravilla de api para que se pudiera guardar la imagen con un id (no auto incrementado) espero y aun Chekes esto y me puedas ayudar ok
    muchas gracias saludos
    paz……………………………

  70. Vioscar Rivero said

    Saludos Cmop, gracias por tu tutorial… En mi caso, quisiera saber como hacer una aplicacion sin interfaz, que se ejecute solamente via linea de comandos, y que su comportamiento sea el siguiente: se llama via codigo, ejm: java -jar webcam.jar, y lo que produce es una captura de la webcam, resultando en una imagen jpg, almacenada en la misma ubicacion del ejecutable en este caso el archivo webcam.jar. todo esto sin que la accion se note, que se ejecute como si fuera en segundo plano. Ejm. Se llama a la aplicacion, hace su trabajo y se cierra la aplicacion hasta que vuelva a ser llamada. Es para el proyecto Prey, habemos muchos usuarios con problemas de la webcam, y creo que una pequeña aplicacion que reemplace a la actual(snapshot), seria una maravilla. Ese modulo hace exactamente lo que te comente anteriormente, te lo comento a ti porque veo que tienes conocimiento de JMF, y me parece una opcion viable contribuir con este proyecto. Gracias!!

  71. Oscar Bermudez said

    Ola amigo queria saber si hay posibilidad de que al momento de hacer click en el boton ver no aparesca la ventana de video sourse me traiga la camara que quiero

  72. MANUEL said

    yo tengo otro codigo que hice yo mismo que graba la imagen sin tanto enrredo todo facil y sencillo

  73. FABIO said

    Oye muchas gracias, tenia un probema ya que la aplicación funcionaba desde netbean y cuando ejecutaba el jar mostraba un error pero hice lo que digiste de pasar el archivo jmf.properties en en el mismo directorio del jar y ya funciono , como llegaste a esa concucion o hay otra manera de hacerlo .muchas gracias

  74. Thiago said

    após tirar uma foto, eu não consigo obter outra foto. Como eu posso conseguir isso?

  75. Hola Gente:
    Tengo una consulta simple.
    Realizo con existo un new MediaLocator(“vfw://0”).
    Luego llamo al Manager.createProcessor(ds) siendo el ds el MediaLocator creado previamente.
    Esto hace que en windows me aparezca una ventana que dice:
    Seleccione un dispositivo de video: (En mi caso solo me deja seleccionar Integrated Webcam).
    Como puedo hacer para que esto no aparezca y seleccione el dispositivo de video que yo selecciono por programa?
    Gracias
    Javier

  76. HOLA:

    PARA PODER ACTIVAR MI CAMARA EN PLATAFORMA UBUNTU?

    GRACIAS.

  77. luis said

    jmf no funciona sobre plataformas windows 7, yo e intentado que reconosca, pero no e tenido existo, asi que dedusco que jmf no es compatible con W7, y si hay alguien que sabe como hacer que reconosca, que me lo diga por favor, pero que realmente funcione!!

  78. javista said

    Como lo pudiera implementar en una jsp ????? ayuda porfavor

  79. Jesús said

    igual a Cobuhacker lo estoy modificando para integrarlo con fx 2.0.3 lo estoy de-ofuscando para quitar muchas de las cosas que no necesito, pero hombre, te llevas mis respetos felicidades

  80. hussein said

    :c no me funciona!!

  81. Iwan said

    Buenas, muy bueno el post y muy buenos comentarios, soluciones como las de aquí no las encontré en otros sites. Pero siguen sin ser la mía…
    Mi problema es que las lineas de código:

    String dispositivo = “vfw:Microsoft WDM Image Capture (Win32):0”;
    CaptureDeviceInfo device = CaptureDeviceManager.getDevice(dispositivo);

    me dan un null para device. Quiero tener acceso a mi webcam y no puedo. Ya he probado con JMFREGISTRY.exe y nada.

    Estoy usando JMF2.1 y NetBeans 7.1 en Windows 7. La webcam es la propia del portatil. En sus propiedades aparecen las siguientes “funciones del dispositivo”: (nombre)Acer Crystal Eye WebCam (tipo)Dispositivo de imagen, (nombre)Dispositivo Compuesto USB (tipo)controladoras de bus serie universal. Y la ubicación es: Port_#0003.Hub_#0004
    Un saludo y gracias por adelantado

    • Cmop said

      El jmfregistry la reconoce???? saludos

      • Iwan said

        Pues no lo sé, dentro de “Capture Devices” tengo: vfw:Microsoft WDM Image Capture (Win32):0
        JavaSoundaudioCapture
        y DirectSoundCapture
        Y los detalles del primero solo dan información sobre los formatos de salida “javax.media.format.YUVFormat […distintos tamaños…]”

        El caso es que he probado a hacerlo de otra forma, dándole directamente la dirección del dispositivo al player:
        ml = new MediaLocator(“vfw:\\Device\000008b”);
        p = Manager.createRealizedPlayer(ml);
        y en esta 2ª linea 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 ” java.io.IOException: Could not connect to capture device”, entonces me salta nuevamente la ventana, me vuelve a dar la excepcion y ya salta a la excepción propia del constructor.

        El código “completo”:

        public class VideoJMF {
        public Component componente=null;
        public Player p=null;
        public Component video;
        public MediaLocator ml;
        VideoJMF(){
        Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
        try{
        ml = new MediaLocator(“vfw:\\Device\000008b”);
        //Tambien he probado con (“vfw://0″) y es el mismo resultado
        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;
        }

        Lo que pretendo es crear desde otro objeto una instancia de VideoJMF y luego añadir el component claro que puedes imaginar que no llego a crear el objeto…

        Estoy loquísimo ya, con esto llevo 2 dias búscandole solución para ver mi webcam en una ventana de java :S

        sugerencias¿?¿?

        • jefraroce said

          Hola q tal,🙂, espero ayudarte eso mismo me paso a mi hace algun tiempo, y lo yo hice fue bajarme de la pagina de oracle http://www.oracle.com/technetwork/java/javase/download-142937.html el JMF, entonces luego de instalarlo en el menu de inicio de windows busque y aparecia JMFCustomizer.exe ejecutalo y debe abrir una interfaz de configuracion dond active la casilla de capture. next-next-next y listo y me reconocio los dispositivos mi aplicacion.🙂

          Saludos y espero ser de ayuda.

          • Iwan said

            Buenas! Gracias por tu interés, a ver si poco a poco se soluciona el asunto porque tras cada solución hay otro problema xD Te cuento, respecto a las distintas opciones que van saliendo de los protocolos y el renderizado no seleccionaste ninguno? Y ahora, yo clicko en next-next tantas veces como hace falta pero al final me da el siguiente error: C:/Program Files/JMF2.1.1e/bin/cuswork/com/sun/media/util/RegistryLib.class.(El sistema no puede encontrar la ruta especificada). ¿Qué puedo hacer?

            Un saludo

            • jefraroce said

              Hola, que tal?

              Pues mira yo lo probe de nuevo dada tu inquietud y a mi solo me decia que no encontraba la ruta si en la primera ventana daba click en (generate two target files jar) esto no debe estar seleccionado y no se debe seleccionar. El programa lo que hace es crear un archivo “custom.jar” donde se guarda la configuracion que se esta haciendo y el cual se debe cargar en nuestro proyecto.

              Yo entendi primero que no t reconocia el dispositivo ps aca una ayuda😄, Si ejecutas la siguiente clase obviamente con las librerias cargadas jmf.jar y custom.jar luego de haber hecho lo que t dije arriba se t debe imprimir un reporte como este:

              Dispositivos

              0 DirectSoundCapture
              1 JavaSound audio capture
              2 vfw:Microsoft WDM Image Capture (Win32):0

              public class Escaner {

              public static void escanear(){
              //se recorre la cantidad de Dispositivos que encuentra disponibles

              System.out.println(“Dispositivos \n”);

              for(int i=0; i este es el driver de video convencional de windows creo q se adapta a casi todo tipo de camaras, si te aparece uno especifico de tu camara ps selecciona ese.

              Entonces para crear el player y cargar el dispositivo, cosa que veo arriba que tu haces diferente t muestro mi codigo.
              public class Video {
              private Player player = null;

              public Component Componente(){
              Component componente_video;
              try {
              // Se obtiene el dispositivo
              CaptureDeviceInfo device = CaptureDeviceManager.getDevice(“vfw:Microsoft WDM Image Capture (Win32):0”);
              //se obtiene la fuente de datos de captura
              if (device == null) {
              System.err.println(“No sea podido cargar el dispositivo”);
              } else {
              MediaLocator localizador = device.getLocator();
              //El localizador es del tipo “vfw://0” video para windows
              //se crea el PLAYER y se ejecuta
              player = Manager.createRealizedPlayer(localizador);

              player.start();
              }
              } catch (IOException ex) {
              Logger.getLogger(Video.class.getName()).log(Level.SEVERE, null, ex);
              } catch (NoPlayerException ex) {
              Logger.getLogger(Video.class.getName()).log(Level.SEVERE, null, ex);
              } catch (CannotRealizeException ex) {
              Logger.getLogger(Video.class.getName()).log(Level.SEVERE, null, ex);
              } catch (NullPointerException ex) {
              System.err.println(“Error J ” + ex.getMessage());
              //Logger.getLogger(Video.class.getName()).log(Level.SEVERE, null, ex);
              System.exit(1);
              }
              //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(280, 240);
              return componente_video;
              } else {
              JOptionPane.showMessageDialog(null,”No se pudo crear el video…”);
              return null;
              }
              }
              }

              Ese codigo es todo lo necesario para crear un componente visual y el cual solo en tu interfaz solo debes agregar un JPanel o lo que quieras tu hacer con el xD. Bueno trate de esta vez ser mas explicito con tu pregunta y aportar mas a la solucion de tu problema.

              • jefraroce said

                Creo q se me corto la clase Escaner asi que aqui va de nuevo, si aca t los encuentra entonces el problema no esta en la configuracion del customizer, ni del registry.🙂

                public class Escaner {

                public static void escanear(){
                //se recorre la cantidad de Dispositivos que encuentra disponibles

                System.out.println(“Dispositivos \n”);

                for(int i=0; i< CaptureDeviceManager.getDeviceList().size(); i++){
                //se muestra uno por uno en pantalla
                System.out.println( i + " " + ( (CaptureDeviceInfo) CaptureDeviceManager.getDeviceList().get(i) ).getName() );
                }

                }

                public static void main (String args[]) {
                escanear();
                }

                }

                Saludos

                • Iwan said

                  Hey muchas gracias por tu atención. Por el momento he conseguido que me localiza el dispositivo automáticamente. La pantalla rosa se ha arreglado por arte de magia (y esto me preocupa por ya que por arte de magia se puede ir). Bueno, por si alguien tiene mucho problema con encontrar su dispositivo dejo aquí el código que ha sido capaz de encontrar el mío:

                  private MediaLocator encuentraCapturador(){
                  Vector deviceList = CaptureDeviceManager.getDeviceList(null);
                  try{
                  for (Iterator it = deviceList.iterator(); it.hasNext();) {
                  CaptureDeviceInfo disp = (CaptureDeviceInfo) it.next();
                  MediaLocator med = disp.getLocator();
                  if(med.getProtocol().toString().startsWith(“vfw”)){
                  player =Manager.createRealizedPlayer(disp.getLocator());
                  return disp.getLocator();
                  }
                  }
                  }catch(Exception e){
                  Logger.getLogger(e.getMessage());
                  }
                  // No hemos encontrado el locator
                  for (Long i = new Long(0); new Long(65536).compareTo(i)>=0; i++) {
                  try {
                  MediaLocator media = new MediaLocator(“vfw://” + Long.toHexString(i));
                  CaptureDeviceInfo webcamInfo = new CaptureDeviceInfo(“Camera”, media, null);
                  webcamInfo.getFormats();
                  player =Manager.createRealizedPlayer(media);
                  return media;
                  } 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);
                  }
                  }
                  return null;
                  }

                  saludos!

  82. diego said

    hola amigo buen aporte pero porq la realizar el jar no funciona la aplicacion o como se deberia hacer..

  83. jefraroce said

    Hola, como estas?🙂 necesito hacer un applet para capturar una imagen desde una camweb, es realmente muy sencilla la aplicacion. El problema esta en que el applet embebido en una pagina web no me reconoce los dispositivos, cosa q si hace desde el netbeans.

    Yo ya intenten firmar las librerias y mi .jar pero de igual forma no los reconoce :S. Yo entiendo que los applets estan limitados por la seguridad de los usuarios, pero necesito que de alguna forma pueda reconocer los dispositivos (almenos la camara). Segun busque en la pagina de oracle JMF si se puede usar desde un applet :S.
    😄 Cualquier ayuda o aclaracion sera con gusto recibida. Gracias y Saludos

  84. Hola, muchas gracias por tus aportes; en serio son muy valiosos; no sé si por favor me podrías brindar tu correo pues quisiera despejar algunas dudas. Muchas gracias de antemano

  85. Jose said

    Chequen esta pagina, trabaja sobre ubuntu.

    http://code.google.com/p/v4l4j/wiki/Examples

    saludos.

  86. Fatima said

    descargue el código fuente y me da error en la mayoría de librerías dice que no existe que puedo hacer?

    • Jose said

      Despues de que hayas instalado el JMF, tienes que importar las librerias, usualmente las puedes encontrar en esta direccion: C:\Program Files\JMF2.1.1e\lib., son 5 librerias, espero que te resuelva el problema.

      saludos.

  87. saludos amigo tengo este codigo y me da erro cuando intento guardar en la BD la imagen es capturada de una webcam mysql me puede ayudar
    // Image Image = img;
    String formato = “JPEG”;
    if(img !=null)
    try
    {

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write((RenderedImage) img, formato, out);
    InputStream in = new ByteArrayInputStream(out.toByteArray());
    String sql = “INSERT INTO foto_empleados VALUES (?)”;
    PreparedStatement ps = mdbc.getMiConexion().prepareStatement(sql);

    ps.setBinaryStream(1, input);
    //ps.setBinaryStream(2,in,(int)file1.length());

    System.out.println(in);
    ps.execute();
    ps.close();

    } catch (SQLException ex) {
    // mensajero.mensajeError(null, “Error Al ejecutar sentencia SQL”);
    javax.swing.JOptionPane mensaje = new javax.swing.JOptionPane();
    mensaje.showMessageDialog(this,”Error Al ejecutar sentencia SQL”,”!!.Atención..!!”,JOptionPane.ERROR_MESSAGE);

    } catch (IOException ex) {
    // mensajero.mensajeError(null, “Error de Entrada/Salida”);
    }

  88. hola como estas? estoy desarrollando un proyecto parecido al tuyo, pero en mi proyecto ademas de capturar la foto de las personas tambien capturo la huella, el modulo de la huella ya lo tengo hecho, pero el modulo de la captura de imagenes a traves de una camara no…procedí entonces a descargar los dos códigos de tu proyecto tanto el que hiciste con JMF como el que hiciste con litil_civil y pues ninguno de los dos me funcionó…podrias explicarme si hay que realizar algun procedimiento adicional en la configuracion de las librerias la cuales ubique en la ruta donde estan ubicados todos los jar de las librerias de java, y el problema continua.

    Espero tu respuesta, si quieres escribeme al correo rrosero_80@hotmail.com , por favor te lo agradecere

  89. Ricardo said

    Buen día, estoy desarrollando un proyecto que permita el registro de usuarios a través de un sistema dividido en dos modulos, el primer módulo y que ya lo tengo desarrollado es la captura y verificación de huellas digitales a través de java y el segundo módulo es la captura de imágenes a través de una cámara utilizando también java.

    Descargué las dos aplicaciones presentadas por ti, la de JMF y la de LTI-CIVIL, ubiqué las librerías en las respectivas carpetas del JDK y al momento de compilar los proyectos presenté numerosos errores, entonces te pregunto lo siguiente: Hay que realizar algun procedimiento adicional al que tienes publicado en tu sitio web?

    Espero tu respuesta, gracias

  90. Marcos said

    Hola Amigos .. aca tengo una duda .. veo la imagen en mi aplicacion y todo bien .. el problema es como hago para guardar la imagen capturada de la webcam .. trate de hacer esto . pero solo llege hasta aqui !! …

    try{

    Image img=null;
    FrameGrabbingControl fgc = (FrameGrabbingControl)
    player.getControl(“javax.media.control.FrameGrabbingControl”);
    Buffer buf = fgc.grabFrame();
    // creamos la imagen awt
    BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
    img = btoi.createImage(buf);

    if (img != null)
    {

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write((RenderedImage) img, “JPEG”, out);
    InputStream in = new ByteArrayInputStream(out.toByteArray());

    // ——————————————————————————————————————————-
    // AQUI COMO AGO PARA CONVERTIR LA IMAGEN A BYTE :.. PARA GUARDARLO EN BD SQL POSTGRESQL
    // ——————————————————————————————————————————-

    }catch(Exception ex){}

  91. D@xter said

    Hola Amigos .. aca tengo una duda .. veo la imagen en mi aplicacion y todo bien .. el problema es como hago para guardar la imagen obtenida por la captura de la webcam .. trate de acer esto . pero solo llege hasta aqui !! …

    try{

    Image img=null;
    FrameGrabbingControl fgc = (FrameGrabbingControl)
    player.getControl(“javax.media.control.FrameGrabbingControl”);
    Buffer buf = fgc.grabFrame();
    // creamos la imagen awt
    BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
    img = btoi.createImage(buf);

    if (img != null)
    {

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write((RenderedImage) img, “JPEG”, out);
    InputStream in = new ByteArrayInputStream(out.toByteArray());

    // ——————————————————————————————————————————-
    // AQUI COMO AGO PARA CONVERTIR LA IMAGEN A BYTE :.. PARA GUARDARLO EN BD SQL
    // ——————————————————————————————————————————-

    }catch(Exception ex){}ç

  92. cesarnando said

    hola amigazo de escribo desde peru, la pregunta es como agrego el .jar y donde lo descarlo por favpr me he pasado buscando no la encuentro y tambien me indicas como agregarlo porfa. graciasssssssss esta bueno tu blogggg

  93. Alex Millan said

    Muy interesante este tema, muy buena solución me ahorraste buen tiempo de investigación, pero tengo una pregunta, a nosotros nos funciona muy bien pero si lo queremos colocar en un proyecto como .jar y ejecutarlo en cualquier computador creo que no funciona, ya que en todos los equipos no esta instalado el jmf instalado y el archivo “jmf.properties” no es el mismo para todos.

    Como lo hago para que solucionar este problemita…

  94. vrolokms said

    Saludos, muchas gracias por tu aporte estoy actualmente desarrollando un sistema de registro con huella digital y quiero tomar la imagen desde la webcam , cuando corro el JMF Registry me detecta mi camara ,he agregado los jar a mi libreria JMF pero al momento de correrlo me muestra este error, he leido los comentarios pero no he solucionado mi problema cualquier aporte es de gran ayuda.

    Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
    at tomarfoto.TomarFoto.capturarImagen(TomarFoto.java:48)
    at tomarfoto.Imagen.cmdMostrarActionPerformed(Imagen.java:57)
    at tomarfoto.Imagen.access$000(Imagen.java:5)
    at tomarfoto.Imagen$1.actionPerformed(Imagen.java:27)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:682)
    at java.awt.EventQueue$3.run(EventQueue.java:680)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:696)
    at java.awt.EventQueue$4.run(EventQueue.java:694)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

  95. jerrygera said

    Buenas tardes, Soy gerardo, tengo experencia en java y la verdad me tope con algo bastante extraño haha hice todo y jalo a la perfeccion pero solamente una vez, al volver a ejecutar el programa uff ya no reconoce la camara y realiza todas las soluciones posibles y ninguna simplemente no detecta la camara de nuevo, pero porque la primera vez si, no entiendo hasta reinstale mi camara web y no. alguna sugerencia amigo.

  96. VdeVatman said

    Hola, hay que descargar algo si quieres ejecutar un código programado con JMF en un ordenador distinto a dónde programaste el código? (además de el Java de toda la vida, claro).

  97. gustavo said

    hola que tal estoy utilizando el proyecto pero al momento de detectar el proyecto y elejir la opcion de detectar me aparece esto
    Exception in thread “VFW Request Thread” java.lang.UnsatisfiedLinkError: JMFSecurityManager: java.lang.UnsatisfiedLinkError: no jmvfw in java.library.path
    at com.sun.media.JMFSecurityManager.loadLibrary(JMFSecurityManager.java:206)
    at com.sun.media.protocol.vfw.VFWCapture.(VFWCapture.java:19)
    at com.sun.media.protocol.vfw.VFWSourceStream.doConnect(VFWSourceStream.java:241)
    at com.sun.media.protocol.vfw.VFWSourceStream.run(VFWSourceStream.java:763)
    at java.lang.Thread.run(Thread.java:722)

  98. Victor said

    Hola Cmop gracias por el tutorial me a sido de mucha ayuda, pero tengo una duda, en esta parte:

    Format []formatos=dev.getFormats();
    FormatControl formatControl = (FormatControl)player.getControl(“javax.media.control.FormatControl”);
    formatControl.setFormat ((YUVFormat)formatos[0]);

    en tu programa veo que tienes un for donde busca todos los formatos del dispositivo, pero si yo solo ocupo uno como puedo darle un formato yuv de 176 x 174 a la imagen para que se guarde con el mismo tamaño, en lugar de los 640 x 480 que me sale por defecto? para adaptarlo bien a mi proyecto

    Saludos

  99. Geo said

    Hola todos, Actualmente tengo el programa funcionando con la webcam, tengo dos cuadros del mismo tamaño, uno es un JPanel donde muestro la imagen en movimiento para captura y el otro es un JLabel donde muestro la imagen ya capturada, tengo un problema y es que al momento de capturar la imagen algunas veces (Casi la mayoria) la imagen capturada muestra una pequeña parte de la imagen en movimiento, por ejemplo si estoy tomando la foto a un rostro, en el cuadro de movimiento aparece el rostro perfectamente pero cuando le doy capturar, la imagen del cuadro de captura solo aparece un ojo, como si le hubiera hecho zoom. No me explico que podria ser, mi codigo de captura es el sgte:

    b.capturarImagen();
    ImageIcon icon = new ImageIcon();
    Image img = b.getImagen();
    icon.setImage(b.getImagen());

    Icon icono = new ImageIcon(img.getScaledInstance(imagen.getWidth(), imagen.getHeight(), Image.SCALE_DEFAULT));
    imagen.setIcon(icono);

    Por favor si alguien conoce cual es la solucion al problema le agradeceria enormemente.

  100. ruben said

    Hola, saben como obtener de la foto ya tomada … un pixel y saber si es de un color, ya sea rojo, verde, azul, o cualquiera … saludos

  101. juliansg30@gmail.com said

    Sin Dispositivos Detectados JMF NO ME RECONOCE NINGÚN DISPOSITIVOS

  102. antony martinez said

    Buenos días yo tengo el siguiente problema , no es siempre pero eventualmente no me detecta la camara y tengo que cambiar esta de puerto usb y volver a abrir el bachero, para que me reconosca el dispositivo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: