• javacv 基础04-读取mp4,avi等视频文件并截图保存图片到本地


    javacv 读取mp4,avi等视频文件并截图保存图片到本地

    代码如下:

    package com.example.javacvstudy;
    
    
    import org.bytedeco.javacv.FFmpegFrameGrabber;
    import org.bytedeco.javacv.Frame;
    import org.bytedeco.javacv.Java2DFrameConverter;
    
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    
    import org.opencv.core.Core;
    import org.springframework.boot.test.context.SpringBootTest;
    
    
    
    @SpringBootTest
    class ReadMp4 {
    
    
        public static void main(String[] args) {
    // 加载OpenCV库
            System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    
            // 视频文件路径
            String videoPath = "D:\\down\\baozi.mp4"; // 替换为您的视频路径
    
            // 保存帧截图的文件夹路径
            String outputFolderPath = "D:\\temp\\img"; // 替换为您的输出文件夹路径
            File outputFolder = new File(outputFolderPath);
            outputFolder.mkdirs();
    
            // 打开视频文件
            try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(videoPath)) {
                grabber.start();
    
                // 遍历视频的每一帧
                int frameNumber = 0;
                Java2DFrameConverter converter = new Java2DFrameConverter();
                while (true) {
                    Frame frame  =  grabber.grabImage();
                    if (frame == null) {
                        break;
                    }
    
                    // 将帧转换为BufferedImage
                    BufferedImage image = converter.convert(frame);
    
                    // 保存图片
                    String outputFilePath = outputFolderPath + File.separator + "frame_" + frameNumber + ".jpg";
                    File outputFile = new File(outputFilePath);
                    ImageIO.write(image, "jpg", outputFile);
    
                    frameNumber++;
                    Thread.sleep(1000);
                }
                grabber.stop();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            System.out.println("帧截图保存完成!");
    
        }
    
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    运行结果:

    在这里插入图片描述

    测试视频mp4 下载

  • 相关阅读:
    原生js值之数据类型详解
    Qt扫盲-QFutureSynchronizer 理论总结
    数字孪生技术架构
    百度松果 买礼物(贪心)
    四类取整方式
    界面组件DevExpress WPF v23.1 - 进一步升级数据处理能力
    2023-9-27 JZ77 按之字型顺序打印二叉树
    嵌入式Ubuntu安装Opencv
    WPF项目-按着键盘方向键,移动格子盒子效果
    在线客服系统源码开发实战总结:需求分析及前端代码基本技术方案
  • 原文地址:https://blog.csdn.net/hai411741962/article/details/132576790