Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹

发布于:2025-03-20 ⋅ 阅读:(25) ⋅ 点赞:(0)

引入依赖

        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.17</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.5.7</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv-platform</artifactId>
            <version>1.5.7</version>
        </dependency>

视频拆帧处理

    public static void main(String[] args) {
        File file = new File("C:\\Users\\EDY\\Desktop\\frame");
        File[] files = file.listFiles();
        System.out.println("files.length = " + files.length);
        long millis = System.currentTimeMillis();
        try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("https://a803.hmgreat.com:9001/sucaiwang/2025-03-07/170bdbb2-72d0-49a3-9705-0b55d8bd6719.mp4")) {
            grabber.start();
            int length = grabber.getLengthInVideoFrames();
            System.out.println("length = " + length);
            Java2DFrameConverter converter = new Java2DFrameConverter();
            int frameCount = 0;
            Frame frame;
            while ((frame = grabber.grabImage()) != null) {
                //计数小于文件夹图片数量则表示已做过处理,需跳过不进行重复处理
                if (frameCount < files.length) {
                    frameCount++;//计数
                    continue;
                }
                frameCount++;//计数
                BufferedImage img = converter.getBufferedImage(frame);
                //压缩图片并且保存
                Thumbnails.of(img).scale(0.5).toFile(new File(file.getPath() + File.separator + "frame_" + frameCount + ".jpg"));
            }
            grabber.stop();
            System.out.println("耗时: " + ((System.currentTimeMillis() - millis) / 1000));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

执行效果

在这里插入图片描述
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到