Boa tarde, comunidade java…
Venho pedira ajuda…
Estou desenvolvendo uma aplicação onde preciso utilizar a web cam para capturar uma imagem.
Então optei pelo JMF…
Tipo que já instalei ele e está corretamente configurado pois quando o JMF Registry e JMStudio minha web cam funciona bacana.
Agora o problema é que qndo estou rodando meu código recebo a seguinte informação:
[color=red]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:619)[/color]
Bom se alguém puder me ajudar agradeço…
abraços
import java.awt.*;
import javax.media.*;
import javax.media.format.AudioFormat;
import javax.media.format.VideoFormat;
import javax.swing.*;
import java.awt.event.*;
public class Main {
public static Player player = null;
public static CaptureDeviceInfo di = null;
public static MediaLocator ml = null;
//-------- Inicio
public static void main(String[] args) {
//CaptureDeviceInfo deviceInfo =
//CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
//------------
// Busca de informações dos dispositivos de captura registrados
java.util.Vector deviceListVector = CaptureDeviceManager.getDeviceList(null);
if (deviceListVector == null) {
System.out.println("... error: media device list vector is null, program aborted");
System.exit(0);
}
if (deviceListVector.size() == 0) {
System.out.println("... error: media device list vector size is 0, program aborted");
System.exit(0);
}
for (int x = 0; x < deviceListVector.size(); x++) {
// display device name
CaptureDeviceInfo deviceInfo = (CaptureDeviceInfo) deviceListVector.elementAt(x);
String deviceInfoText = deviceInfo.getName();
System.out.println("device " + x + ": " + deviceInfoText);
// display device formats
Format deviceFormat[] = deviceInfo.getFormats();
for (int y = 0; y < deviceFormat.length; y++) {
// serach for default video device
if (deviceFormat[y] instanceof VideoFormat) {
System.out.println(">>> capture video device = " + deviceFormat[y].toString());
}
if (deviceFormat[y] instanceof AudioFormat) {
System.out.println(">>> capture audio device = " + deviceFormat[y].toString());
}
}
}
System.out.println("fim da listagem ");
// --------
// Inicialização dos componentes para viusalização
JFrame frame1 = new JFrame("Primeiro teste de captura"); // JFrame de Teste
JButton botao_stop = new JButton("Sair");
//container onde serão adicionados todos componentes
Container container1 = frame1.getContentPane();
JPanel panel1 = new JPanel();
container1.add(botao_stop, BorderLayout.EAST);
botao_stop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
player.close();
player.deallocate();
System.exit(0);
}
});
String str1 = "vfw:Microsoft WDM Image Capture (Win32):0";
di = CaptureDeviceManager.getDevice(str1);
ml = di.getLocator();
try {
player = Manager.createRealizedPlayer(ml);
System.out.println("Valor de time base: " + player.getTimeBase().getTime());
player.start();
Component comp, compcontrol;
if ((comp = player.getVisualComponent()) != null) {
compcontrol = player.getControlPanelComponent();
panel1.add(comp, BorderLayout.SOUTH);
container1.add(compcontrol, BorderLayout.SOUTH);
}
} catch (Exception e) {
e.printStackTrace();
}
container1.add(panel1, BorderLayout.NORTH);
frame1.pack();
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// fecha a aplicação
frame1.setVisible(true);
}
}