Oi! (Primeiro post aqui, xD)
Eu estou tentando fazer um programa que mostra um video usando JavaCV que fecha a janela (ou o vídeo) ao ser apertado a tecla ESC. Segue meu código:
[code]
import java.awt.event.ActionEvent;
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.*;
import com.googlecode.javacv.OpenCVFrameGrabber;
import java.awt.event.ActionListener;
import javax.swing.JDesktopPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class AbrirVideo extends JFrame {
public static void main(String[] args){
JFrame window = new JFrame("JavaCV");
final JDesktopPane desktop = new JDesktopPane();
JMenuBar myMenuBar = new JMenuBar();
JMenu myMenuFile = new JMenu("File");
JMenuItem openVideo = new JMenuItem("Open Video");
myMenuBar.add(myMenuFile);
myMenuFile.add(openVideo);
JMenuItem exit = new JMenuItem("Exit");
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
myMenuFile.add(exit);
openVideo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String path = "";
JFileChooser file = new JFileChooser();
if(file.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) path = file.getSelectedFile().getAbsolutePath();
CanvasFrame canvas = new CanvasFrame("Video Canvas");
canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
FrameGrabber grabber = new OpenCVFrameGrabber(path);
try {
grabber.start();
IplImage img;
while(true){
img = grabber.grab();
canvas.setCanvasSize(grabber.getImageWidth(), grabber.getImageHeight());
if(img!=null){
canvas.showImage(img);
desktop.add(canvas);
canvas.waitKey(2);
if(canvas.waitKey(2).getKeyChar()==27) System.exit(0);
}
}
}catch (Exception ae) {}
}
});
window.add(desktop);
window.setJMenuBar(myMenuBar);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(200, 100);
window.setVisible(true);
}
} [/code]
Mas quando aperto o ESC, nada acontece! E além disso, quando adiciono a linha: “if(canvas.waitKey(2).getKeyChar()==27) System.exit(0);”, o vídeo não é transmitido, só fica parado (no primeiro quadro do vídeo). Alguém tem alguma ideia pra resolver esse problema?
Estou com um outro problema também: não consigo que o vídeo fique na janela interna ou no JDesktopPane criado, só consigo que ele seja exibido numa janela externa do próprio Canvas. Existe alguma maneira de o vídeo ser exibido dentro de algum JFrame?
Agradeço qualquer ajuda.
Até!
=]