吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3553|回复: 4
收起左侧

[Java 转载] 如何使用java提取视频缩略图或某一帧的图片

[复制链接]
一蓑烟雨 发表于 2020-11-24 15:47
有个项目用到,需要上传视频,并提取一针图片.

百度大法后整理如下.

依赖使用maven

[XML] 纯文本查看 复制代码
  <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>0.8</version>
        </dependency>


代码如下

[Java] 纯文本查看 复制代码
public class CreateImage {




    /**
     * 获取指定视频的帧并保存为图片至指定目录
     * [url=home.php?mod=space&uid=952169]@Param[/url] videofile  源视频文件路径
     * @param framefile  截取帧的图片存放路径
     * @throws Exception
     */
    public static void fetchFrame(String videofile, String framefile)
            throws Exception {
        long start = System.currentTimeMillis();
        File targetFile = new File(framefile);
        FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile);
        ff.start();
        int lenght = ff.getLengthInFrames();
        int i = 0;
        Frame f = null;
        while (i < lenght) {
            // 过滤前5帧,避免出现全黑的图片,依自己情况而定
            f = ff.grabFrame();
            if ((i > 5) && (f.image != null)) {
                break;
            }
            i++;
        }
        opencv_core.IplImage img = f.image;
        int owidth = img.width();
        int oheight = img.height();
        // 对截取的帧进行等比例缩放
        int width = 800;
        int height = (int) (((double) width / owidth) * oheight);
        BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
        bi.getGraphics().drawImage(f.image.getBufferedImage().getScaledInstance(width, height, Image.SCALE_SMOOTH),
                0, 0, null);
        ImageIO.write(bi, "jpg", targetFile);
        //ff.flush();
        ff.stop();
        System.out.println(System.currentTimeMillis() - start);
    }




    public static void main(String[] args) {
        try {
            CreateImage.fetchFrame("D:\\1.mp4", "D:\\test5.jpg");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wzj_cqbs 发表于 2020-11-24 16:16
我还是小白,暂时还看不太懂,谢谢楼主分享。
春在说谎 发表于 2020-11-24 17:08
白天不懂夜的嗨 发表于 2020-12-28 10:21
yuechenxing 发表于 2020-12-28 16:24
任何语言都是ffmpeg
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表