美文网首页
JavaCV 截图视频任何一帧的图片

JavaCV 截图视频任何一帧的图片

作者: oO白眉大虾Oo | 来源:发表于2020-05-22 21:13 被阅读0次

参考了众多网友的代码,改良后可以取任何一帧的图片

安装依赖

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

代码实现

    /**
     * 获取指定帧数的封面图片
     * 
     * @param frameNum 帧数
     * @param filePath 文件所在路径
     */
    public static BufferedImage getBufferedImageByFrame(int frameNum, String filePath) throws IOException {
        FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(filePath);
        return getBufferedImageByFrame(frameNum, grabber);
    }

    private static BufferedImage getBufferedImageByFrame(int frameNum, FFmpegFrameGrabber grabber)
        throws FrameGrabber.Exception {
        grabber.start();
        Frame frame;
        int i = 0;
        int fps = (int)grabber.getFrameRate();
        BufferedImage buffer = null;
        while (i < grabber.getLengthInFrames()) {
            frame = grabber.grabImage();
            if (i >= fps && i % (fps * frameNum) == 0) {
                Java2DFrameConverter converter = new Java2DFrameConverter();
                buffer = converter.getBufferedImage(frame);
                break;
            }
            i++;
        }
        grabber.stop();
        return buffer;
    }

    @Test
    public void test() throws IOException {
        String filePath = path + "15895090168002467.mov";
        BufferedImage buffer = getBufferedImageByFrame(1, filePath);
        saveImage(buffer, "158950901680024671.jpg", "jpg");
    }

相关文章

网友评论

      本文标题:JavaCV 截图视频任何一帧的图片

      本文链接:https://www.haomeiwen.com/subject/xngcahtx.html