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();