码迷,mamicode.com
首页 > 编程语言 > 详细

java获取视频第一帧图片

时间:2018-10-10 15:26:01      阅读:757      评论:0      收藏:0      [点我收藏+]

标签:int   技术分享   ffmpeg   type   iplimage   div   width   链接   convert   

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获取视频第一帧图片

标签:int   技术分享   ffmpeg   type   iplimage   div   width   链接   convert   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!