首页 > 编程语言 > 详细

java获取视频第一帧图片

时间:2018-10-10 15:06:24      阅读:1182      评论:0      收藏:0      [点我收藏+]

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

 

java获取视频第一帧图片

原文:https://www.cnblogs.com/qinxiaofei/p/9766351.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!