Problemas com biblioteca do JMF

0 respostas
M

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.

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

// <editor-fold defaultstate="collapsed" desc="Generated Code">
    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;

}
Criado 2 de abril de 2013
Respostas 0
Participantes 1