Java Media Framework permite la reproduccion de archivos multimedia (video, musica), pero tambien permite capturar desde dispositivos externos (una webcam por ejemplo) video y audio, eso es lo que haremos hoy.
En un tutorial pasado se vio la manera de detectar los dispositivos que se encuentren actualmente en nuestro sistema, si no lo viste, date una vuela por aqui "
Buscar Dispositivos".
Para este ejemplo, se utilizara como dispositivo de captura, "vfw:Microsoft WDM Image Capture (Win32):0" que es el Controlador Universal de Windows para las camaras de video.
Que necesitamos:
- IDE Netbeans 6.9
- Libreria JMF (Java Media Framework) instalada y configurada en el sistema
- Una WebCam, celular con camara tambien sirve
Proyecto:
1. crea un nuevo proyecto en Netbeans, llamalo "
jmfvideosimple", crea una clase "
jmfVideo.java" y una clase mas de tipo JFrame, llamalo "
video.java", debes tener algo como esto:
Debes añadir la libreria JMF al proyecto, para esto clic derecho donde dice "Bibliotecas" y clic en "Agregar Biblioteca", si no sabes como agregar una libreria a Netbeans, busca en el blog que hay un tuto que indica como.
2. A nuestra clase "
jmfVideo.java" añade el siguiente codigo:
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.media.*;
import javax.media.cdm.CaptureDeviceManager;
import java.io.*;
import java.awt.*;
import javax.swing.JOptionPane;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class jmfVideo {
//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
CaptureDeviceInfo device = CaptureDeviceManager.getDevice(dispositivo);
//se obtiene la fuente de datos de captura
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(jmfVideo.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoPlayerException ex) {
Logger.getLogger(jmfVideo.class.getName()).log(Level.SEVERE, null, ex);
} catch (CannotRealizeException ex) {
Logger.getLogger(jmfVideo.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;
}
}
}
Esta clase utiliza el dispositivo
vfw:Microsoft WDM Image Capture (Win32):0, para crear un Player y devolver un componente de VIDEO.
3. Ahora, en la clase interfaz "video.java", debemos implementar la clase anterior, para ello,solo trabajaermos en el Constructor de la clase.
public class video extends javax.swing.JFrame {
jmfVideo b = new jmfVideo();
/** Creates new form video */
public video() {
initComponents();
this.setTitle("WebCam - by Mouse");
//formulario al centro de la pantalla
this.setLocationRelativeTo(null);
//se da un tamaño al jFrame
this.setSize(320, 240);
//se coloca un layout tipo CAJA
getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
//se añade el componente de video
this.add( b.Componente());
}
Como se ve en el ejemplo, se crea una instancia a nuestra clase "jmfVideo.java" y esta se añade al JFrame , el resto del codigo, solo es para dar un tamaño inicial al JFrame y una alineacion tipo CAJA (BOX) utilizando Layout.
4. Eso es todo, solo queda ejecutar el proyecto, teniendo la webcam ya conectada claro :), (creame, pasa hasta en las mejores familias)
Y Si hicimos todo bien, ya podremos ver el video dede nuestra webcam
Como modelo en el video podemos ver a mi perro haciendo lo que mejor sabe hacer, "dormir", hubiera querido filmar otra cosa, pero un cementerio tiene mas vida que el lugar donde vivo asi que toco grabar al perro :)
Proyecto
IDE: Netbeans 6.9.1
Recuerda si te bajas el Codigo Fuente, esta bien, aprenderas, pero si realizas el proyecto tu solo, aprenderas mucho mejor