JFM - Mostrar dispositivos disponibles

    En otro artículo ya vimos como instalar el JMF así que llegó el momento de ponernos manos a la obra. Utilizando las librerías del JMF realizaremos una lista con los dispositivos multimedia con los que cuenta nuestro equipo. Además analizaremos un poco más cada dispositivo. Para ellos veremos que formatos poseen cada uno de los dispositivos encontrados. Únicamente veremos por encima el funcionamiento de 3 de las clases del paquete javax.media, contenido en el jar jmf.jar. Ese jar debe de encontrarse en el subdirectorio lib contenido en el directorio principal de la instalación del JMF.


El código del archivo se encuentra a continuación.



// DispositivosDisponibles.java ------------------------------------------------

package jwebcam;


import java.util.Vector;

import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Format;


/**
 * Mostrará los dispositivos multimedia disponibles en el equipo.
 * 
 * @author ProgramminHeroes
 */
public class DispositivosDisponibles {
    
    public static void main(String[] args) {
        // Obtenermos una lista con todos los dispositivos
        // multimedia del equipo.
        Vector vector = CaptureDeviceManager.getDeviceList(null);
        // Recorremos el vector de dispositivos
        for (int i=0; i<vector.size(); i++) {
            CaptureDeviceInfo device = (CaptureDeviceInfo)vector.elementAt(i);
            // Mostramos el nombre.
            System.out.println(device.getName());
            // Obtenemos los formatos que ofrece cada dispositivo.
            Format[] formats = device.getFormats();
            for (int j = 0; j<formats.length; j++) {
                // Mostramos cada uno de los formatos disponibles.
                System.out.println("  "+formats[j].toString());
            }
        }
    } // fin de main(String[]);
    
} // fin de la clase DispositivosDisponibles

// fin de DispositivosDisponibles.java -----------------------------------------

NOTA: Según mi experiencia personal el JMF no funciona con la versión 1.7 de java para equipos de 64 bits. Por suerte yo tengo instalada la versión 1.6 de Java que no distinguía entre equipos de 32 bits o de 64. Con NetBeans el problema tiene fácil solución, basta con ir a propiedades del proyecto y en el apartado librerías seleccionar una versión de Java de 32 bits.


11 comentarios :

  1. Buen tutorial! Lo he estado siguiendo y copiado para aprender algo sobre JFM y cuando lo ejecuto no hace nada, estoy usando Eclipse y las librerías las tengo agregadas y demás ya que no me da problemas al hacer los import. Cuando ejecuto no me aparece ningún mensaje de nada ni de todo OK ni de error

    ResponderEliminar
    Respuestas
    1. ¿La compilación funciona perfectamente?
      ¿Si pones un System.out.println("loquesea"); al inicio del método main tampoco te muestra nada?

      Eliminar
    2. Eso sí, pero se ve que no detecta ningún tipo de dispositivo porque he pasado a hacer el siguiente ejemplo, el de visualizar la webcam y salta el mensaje de "No hay webcam" y lo suyo sería que lo mostrara ya que tengo portátil con webcam integrada. No sé porque debe ser, para ser más específico tengo instalado la última versión del JDK de Java y del JMF

      Eliminar
    3. Recuerda que la versión del JDK ha de ser de 32 bits.
      Sí lo es yo probaría a abrir el JMStudio (la aplicación java de ejemplo que viene con el JMF) para ver si allí te detecta la webcam.
      Si tampoco la detecta prueba a registrar la webcam con JMFRegistry (también se instala con el JMF) y realiza un chequeo de tu equipo en busca de dispositivos.
      No estoy en un windows, así que no puedo decirte cuales son los botones exactos que debes de pulsar para iniciar esa búsqueda :S

      Eliminar
    4. Es la que tengo instalada...pero nada voy a probar a hacerlo desde una máquina virtual y probando con alguna otra web cam a ver si consigo algo

      Eliminar
    5. Es raro que teniendo los drivers de tu webcam instalados el JMFRegistry no la detecte... es raro pero supongo que no imposible xD

      Eliminar
  2. Al final le he reinstalado el JMF y cuando hace el JMFRegistry me aparece una ventana para que seleccione la webcam que tengo pero por mucho que le de a Aceptar o Aplicar no la coge...

    ResponderEliminar
    Respuestas
    1. Lo único que te podría decir ya es que probaras con la versión 1.6 del JDK porque es con la que a mí me a funcionado

      Eliminar
  3. donde puedo conseguir el jdk 1.6 no la encuentro en la paina de oracle

    saludos.

    ResponderEliminar
  4. Hola Espero que me ayudes, tengo el mismo problema no detecta ningún dispositivo y en la instalacion de jmf me sale 2 opicones Hp cyberlink y web cam 1 las eligo o marco cancelar? como a ti no te sale :D ayudameeeeeeeee no detectaaaa nada tengo netbeans 8.0 y jdk 1.8 sera por eso :D Gracias

    ResponderEliminar
  5. Tengo un problema, ya detecta el dispositivo vfw:Microsoft WDM Image Capture (Win32):0, pero a la hora de cargarlo en el JPanel no aparece el código que estoy utilizando es este:

    try{
    CaptureDeviceInfo device = CaptureDeviceManager.getDevice(camara);
    MediaLocator localizador = device.getLocator();
    player = Manager.createRealizedPlayer(localizador);
    player.start();
    ventana.add(player.getVisualComponent(), BorderLayout.CENTER);
    }
    catch(Exception ex){
    System.out.println("Error: " + ex);
    }

    ventana es el nombre del JPanel, no aparece la imagen de mi cámara, que podrá esta pasando.

    ResponderEliminar