java获取视频第一帧图片

Posted qinxiaofei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java获取视频第一帧图片相关的知识,希望对你有一定的参考价值。

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获取视频第一帧图片的主要内容,如果未能解决你的问题,请参考以下文章

通过 ffmpeg 获取视频第一帧(指定时间)图片

web获取视频图片第一帧

ffmpeg获取网络视频第一帧图片

android获取视频第一帧图片作为封面

iOS开发之视频根据url获取第一帧图片,获取任一帧图片

怎么让视频文件封面显示为视频第一帧?