Java - mostrar frames a velocidad de un video

   
Vista:

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.

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

mostrar frames a velocidad de un video

Publicado por Jordi jordidalmaucolell2@hotmail.com (135 intervenciones) el 04/05/2017 22:30:29
¿El API de Java incluye herramientas para separar los frames de un vídeo? Joer, si que se lo han currado los de Oracle...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad