Olá, tudo bem pessoal ? Sou novo no Blog, acompanho as postagens, mas este é meu primeiro post.
Vamos lá. Estou com um sério problema em relação à utilização do JMF, eu sei que é uma plataforma destualizada, que não recebe mais suporte, e que vai haver pessoas que irão me indicar outras plataformas, que é também super bem vindo.
Porém, quem puder me dar uma solução ficaria muito grato.
Depois que formatei minha máquina, tentei re-instalar todos aplicativos para começar a programar, só que me deparei com erros em relação ao JMF, não consigo mais fazer a utilização bibliotecas:
import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.cdm.CaptureDeviceManager;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
Está constando que o pacote do javax.media não existe. Já instalei o software do JMF (http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html), utilizo a IDE do NetBeans 7.3. Talvez esse tópico irá ajudar à muitos que estejam com esse mesmo tipo de problema.
Já formatei do Windows 8 64Bits para o Windows 7 64bits, e depois para o Windows 7 32 Bits, pensando que fosse algum erro de compatibilidade, mas não consegui resolver o problema!
Estou disponibilizando abaixo o meu código completo, caso alguém queira dar uma conferida.
[code]import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Image;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.cdm.CaptureDeviceManager;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
public class CapturarFoto extends javax.swing.JFrame {
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 String caminho = "";
int width = 150;
int height = 200;
int quality = 100;
private static final long serialVersionUID = 1L;
String nomeFoto;
/** Creates new form CapturarFotos */
public CapturarFoto() {
initComponents();
initialize();
this.setVisible(true);
}
//
private void initComponents() {
btnCapturar = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
btnCapturar.setText("Capturar Foto");
btnCapturar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCapturarActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel1.setLayout(new java.awt.BorderLayout());
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(btnCapturar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE).addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE)).addContainerGap()));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addContainerGap().addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 254, Short.MAX_VALUE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(btnCapturar).addContainerGap()));
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width - 387) / 2, (screenSize.height - 351) / 2, 387, 351);
}// </editor-fold>
private void initialize() {
String str2 = "vfw//0";
di = CaptureDeviceManager.getDevice(str2);
ml = new MediaLocator("vfw://0");
try {
player = Manager.createRealizedPlayer(ml);
player.start();
Component comp;
if ((comp = player.getVisualComponent()) != null) {
jPanel1.add(comp, BorderLayout.NORTH);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Não Foi Possivel se Conectar ao Dispositivo de Captura!");
}
}
public void gravaImg(Image imagem) {
try {
JFileChooser chooser;
chooser = new JFileChooser();
int retorno = chooser.showSaveDialog(null); // showSaveDialog retorna um inteiro , e ele ira determinar que o chooser será para salvar.
if (retorno == JFileChooser.APPROVE_OPTION) {
caminho = chooser.getSelectedFile().getAbsolutePath(); // o getSelectedFile pega o arquivo e o getAbsolutePath retorna uma string contendo o endereço.
nomeFoto = chooser.getSelectedFile().getName().toString();
}
caminho = caminho+".JPG";
ImageIO.write((RenderedImage) imagem, "jpg", new File(caminho));
JOptionPane.showMessageDialog(this, "Imagem Capturada com Sucesso!");
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "não foi possivel encontrar "
+ "o dispositivo para a captura da imagem.");
e.printStackTrace();
}
}
private void getCaptura() {
FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
buf = fgc.grabFrame();
btoi = new BufferToImage((VideoFormat) buf.getFormat());
img = btoi.createImage(buf);
gravaImg(img);
}
private void btnCapturarActionPerformed(java.awt.event.ActionEvent evt) {
getCaptura();
}
private javax.swing.JButton btnCapturar;
private javax.swing.JPanel jPanel1;
}[/code]