
mostrar frames a velocidad de un video
Publicado por yamilet (6 intervenciones) el 04/05/2017 19:42:58
hola que tal espero me puedan ayudar estoy tratando de obtener todos los frames de un video para poderlos mostrar una a una en un jpanel.
tengo el siguente codigo que lo que hace es obtener los frames del video y cuando trato de mostrarlos en el jpanel se ejecuta el for pero solo me muestra el ultimo frame del video.
tengo el siguente codigo que lo que hace es obtener los frames del video y cuando trato de mostrarlos en el jpanel se ejecuta el for pero solo me muestra el ultimo frame del video.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public void leer() {
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(videoseleccionado);
try {
OpenCVFrameConverter.ToIplImage converterToIplImage = new OpenCVFrameConverter.ToIplImage();
Java2DFrameConverter converterToBI = new Java2DFrameConverter();
grabber.start();
int frame_count= grabber.getLengthInFrames();
// label =new JLabel[frame_count];
String fps = Double.toString(grabber.getFrameRate());
Nframe.setText(fps);
for(int i=1120; i<1184; i++){
grabber.setFrameNumber(i);
org.bytedeco.javacv.Frame frame = grabber.grabImage();
if(frame == null) break;
if(frame.image == null) continue;
IplImage image = converterToIplImage.convert(frame);
BufferedImage bi = IplImageToBufferedImage(image);
ImageIcon icon=new ImageIcon(bi);
icono = new ImageIcon(icon.getImage().getScaledInstance(jPanel1.getWidth(), jPanel1.getHeight(), Image.SCALE_DEFAULT));
label=new JLabel(icono);
label.setIcon(icono);
//JLabel label = new JLabel(icono);
jPanel1.add(label);
jPanel1.setVisible(true);
jPanel1.revalidate();
String img_path = "D://" + "frame-" + String.valueOf(i) +".jpg";
cvSaveImage(img_path, image);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static BufferedImage IplImageToBufferedImage(IplImage src) {
OpenCVFrameConverter.ToIplImage grabberConverter = new OpenCVFrameConverter.ToIplImage();
Java2DFrameConverter paintConverter = new Java2DFrameConverter();
org.bytedeco.javacv.Frame frame = grabberConverter.convert(src);
return paintConverter.getBufferedImage(frame,1);
}
Valora esta pregunta


0