javacv进行视频截图

168 阅读1分钟

前言

在开发过程中,有时候要用给视频流截图,可以用javacv进行截图,支持flv、mp4等格式

javacv使用

1、引入以下包

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.5.3</version>
</dependency>

2、程序例子如下

import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber;
import org.bytedeco.javacv.Java2DFrameConverter;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import static org.bytedeco.javacv.FFmpegFrameGrabber.createDefault;

public class UrlDemo {

    public static void main(String[] args) throws IOException {
        BufferedImage bufferedImage =  getBufferedImageByFrame("D:/light/20241121160212.flv");
        ImageIO.write(bufferedImage, "JPEG", new File("./1.jpg"));

    }

    private static BufferedImage getBufferedImageByFrame(String filePath) throws IOException {
        FFmpegFrameGrabber grabber = createDefault(filePath);
        return getBufferedImageByFrame(grabber);
    }

    private static BufferedImage getBufferedImageByFrame(FFmpegFrameGrabber grabber)
            throws FrameGrabber.Exception {
        grabber.start();
        Frame frame;
        frame = grabber.grabImage();
        Java2DFrameConverter converter = new Java2DFrameConverter();
        BufferedImage buffer = converter.getBufferedImage(frame);
        grabber.stop();
        return buffer;
    }


}

输出结果如下:

image.png

总结

用于视频流截图有非常多的工具,看开发过程中怎么做技术选型