Capturar Foto JMF

As duas classes abaixo tem o objetivo de exibir uma imagem da web can…

import java.awt.Component;
import java.awt.Frame;
import javax.swing.JFrame;

public class FrameVideo extends JFrame{
    
    private GerenteJMF gerente;      
    private Component pnlVideo;
    
    public FrameVideo(){
        
            try {

                this.inicializarJMF();

                } catch (Exception e) {
                e.printStackTrace();
             }
        
               this.setLayout(null); //altera o layout para null
               this.setSize(350, 330); //ajusta o tamanho da janela
               this.setLocationRelativeTo(null); //centralizar o jframe na tela
               this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               this.setVisible(true); //torna o jframe visivel   
    }
    
        private void inicializarJMF() throws Exception{  

        gerente = new GerenteJMF();
        pnlVideo = gerente.getPainelVideo();
        pnlVideo.setBounds(10,10, 320,240);
        this.getContentPane().add(pnlVideo);            
                
        }
        
        public static void main(String[] args) {
            new FrameVideo();
        }
        
}
import java.awt.Component;
import java.util.Iterator;
import java.util.Vector;
import javax.media.*;

public class GerenteJMF {
    
     private Player playerVideo = null;    
     
     private Player getPlayerVideo() throws Exception{               


            if (playerVideo == null ){

                 CaptureDeviceInfo device = detectarDispositivoVideo();           
                 MediaLocator ml = new MediaLocator(device.getName());   
                 playerVideo = Manager.createRealizedPlayer(ml);    
                 playerVideo.start();                         
            }   
        return playerVideo;                           
  }
     
     public Component getPainelVideo() throws Exception{          

        return this.getPlayerVideo().getVisualComponent();            

    }
    
     private CaptureDeviceInfo detectarDispositivoVideo(){
       //nesse metodo o jmf retorna todos os dispositivos de captura presentes na maquina
       Iterator it = CaptureDeviceManager.getDeviceList ( null ).iterator();

       while (it.hasNext()){ //iteramos todos os dispositivos

         CaptureDeviceInfo device = (CaptureDeviceInfo) it.next();
         String nome = device.getName();
         //caso seja um dispositivo de video retornamos o primeiro encontrado

         if ( nome.startsWith ("v") ) {
          return device;
         }
       }
       return null;
  }
     
}

[b]Mais no momento de rodar exibe a seguinte mensagem :

java.lang.NullPointerException
at GerenteJMF.getPlayerVideo(GerenteJMF.java:16)
at GerenteJMF.getPainelVideo(GerenteJMF.java:25)
at FrameVideo.inicializarJMF(FrameVideo.java:34)
at FrameVideo.(FrameVideo.java:18)
at FrameVideo.main(FrameVideo.java:41)

[/b]

as linhas são

16:MediaLocator ml = new MediaLocator(device.getName());
25:return this.getPlayerVideo().getVisualComponent();
34:pnlVideo = gerente.getPainelVideo();