Pessoal, estou com o seguinte problema, instalaei o JMF 2.1.1, no software que vem junt ocom ele, ele mostra a webcam e tudo mais, ou seja funciona perfeitamente, mas quando vou usar ele no netbeans ou que for ele me retorna o seguinte erro:
run:
Exception in thread "VFW Request Thread" java.lang.UnsatisfiedLinkError: JMFSecurityManager: java.lang.UnsatisfiedLinkError: C:\Program Files (x86)\JMF2.1.1e\lib\jmvfw.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at com.sun.media.JMFSecurityManager.loadLibrary(JMFSecurityManager.java:206)
at com.sun.media.protocol.vfw.VFWCapture.<clinit>(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)
erro ao apertar botão
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at drentrega.CapturaFoto$1.actionPerformed(CapturaFoto.java:89)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6216)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÇÃO PARADA (tempo total: 7 segundos)
aqui está a classe que estou usando (achei ela em outro tópico e modifiquei meia duzia de linhas)
package drentrega;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.JButton;
import javax.swing.JOptionPane;
public class CapturaFoto extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;
public static Player player = null;
public CaptureDeviceInfo di = null; // @jve:decl-index=0:
public MediaLocator ml = null; // @jve:decl-index=0:
public JButton capture = null;
public Buffer buf = null;
public Image img = null;
public VideoFormat vf = null;
public BufferToImage btoi = null;
public ImagePanel imgpanel = null;
private JButton captura = null;
public CapturaFoto() {
super();
initComponents();
initialize();
this.setSize(600, 530);
setLocation(170, 05);
}
private void initialize() {
this.setLayout(new BorderLayout());
this.setSize(600, 500);
this.add(getCaptura(), BorderLayout.SOUTH);
this.setVisible(true);
String str2 = "vfw://0";
di = CaptureDeviceManager.getDevice(str2);
ml = new MediaLocator("vfw:Microsoft WDM Image Capture (Win32):0");
try {
player = Manager.createRealizedPlayer(ml);
player.start();
Component comp;
if ((comp = player.getVisualComponent()) != null) {
add(comp, BorderLayout.NORTH);
}
add(captura, BorderLayout.SOUTH);
} catch (Exception e) {
e.printStackTrace();
}
}
public void gravaImg(Image imagem) throws IOException {
String caminho = "C:/photos" + "00" + ".JPG";
try {
ImageIO.write((RenderedImage) imagem, "jpg", new File(caminho));
JOptionPane.showMessageDialog(this, "Imagem Capturada!");
player.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "não foi possivel encontrar " + "o dispositivo para a captura da imagem.");
e.printStackTrace();
}
}
private JButton getCaptura() {
if (captura == null) {
captura = new JButton("Captura");
captura.setBounds(10, 10, 600, 500);
captura.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
buf = fgc.grabFrame();
btoi = new BufferToImage((VideoFormat) buf.getFormat());
img = btoi.createImage(buf);
try {
player.stop();
gravaImg(img);
} catch (IOException ex) {
Logger.getLogger(CapturaFoto.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
return captura;
}
class ImagePanel extends javax.swing.JPanel {
private static final long serialVersionUID = 1L;
public Image myimg = null;
public ImagePanel() {
JOptionPane.showMessageDialog(null, "setando a classe");
setLayout(null);
setSize(630, 530);
}
public void setImage(Image img) {
this.myimg = img;
repaint();
}
@Override
public void paint(Graphics g) {
if (myimg != null) {
g.drawImage(myimg, 0, 0, this);
}
}
}
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Capturar Foto");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 607, Short.MAX_VALUE));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 489, Short.MAX_VALUE));
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new CapturaFoto().setVisible(true);
}
});
}
}
a janela é aberta e tudo, mas a imagem da web não e mostrada, ela não é ligada (luz do lado mostra se camera está em uso ou não),
se vocês puderem me dar uma luz do que fazer ficaria muito grato, agora pergunta que não quer calar é porque no JMStudio tudo funciona e aqui não?
estou utilizando o Windows Seven 64bits, o mais atualizado possível
ps.: não tenho como testar no XP por enquanto para ver se funciona, mas segunda-feira farei o teste e posto a resposta.
