2018-10-10
用的jar包如下(用的版本比较新),主要是:
jar包链接:https://pan.baidu.com/s/1LI68r6H17sAA4Pfbnpm44g
1 public static void fetchFrame(String videofile, String framefile) 2 throws Exception { 3 long start = System.currentTimeMillis(); 4 File targetFile = new File(framefile); 5 FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile); 6 ff.start(); 7 int lenght = ff.getLengthInFrames(); 8 int i = 0; 9 Frame f = null; 10 while (i < lenght) { 11 // 过滤前5帧,避免出现全黑的图片,依自己情况而定 12 f = ff.grabFrame(); 13 if ((i > 48) && (f.image != null)) { 14 break; 15 } 16 i++; 17 } 18 // IplImage img = f.image; 19 int owidth = f.imageWidth; 20 int oheight = f.imageHeight; 21 // 对截取的帧进行等比例缩放 22 int width = 300; 23 int height = (int) (((double) width / owidth) * oheight); 24 Java2DFrameConverter converter = new Java2DFrameConverter(); 25 BufferedImage fecthedImage = converter.getBufferedImage(f); 26 BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); 27 bi.getGraphics().drawImage(fecthedImage.getScaledInstance(width, height, Image.SCALE_SMOOTH), 28 0, 0, null); 29 ImageIO.write(bi, "jpg", targetFile); 30 ff.stop(); 31 System.out.println(System.currentTimeMillis() - start); 32 }
注:javacv0.8的方法有如下不同:
int owidth = img.width(); int oheight = img.height();
原文地址:https://www.cnblogs.com/qinxiaofei/p/9766351.html
时间: 2024-11-05 18:27:01