如何从视频java中提取帧?

时间:2016-08-15 14:50:23

标签: java ffmpeg xuggle

我正在研究一个项目来对视频进行分析,我想将视频拆分成帧来单独处理。我看了几个开源库,包括Xuggler和FFMPEG,但它们都已过时且无法使用。有没有一种简单的方法可以从视频中提取帧并将其作为BufferedImage的集合处理?

2 个答案:

答案 0 :(得分:0)

请遵循此代码

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FrameGrabber.Exception;

public class Read{
    public static void main(String []args) throws IOException, Exception
    {
        FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber("D:/video.mp4");
        frameGrabber.start();
        IplImage i;
        try {

            i = frameGrabber.grab();
            BufferedImage  bi = i.getBufferedImage();
            ImageIO.write(bi,"png", new File("D:/Img.png"));
            frameGrabber.stop();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
}

答案 1 :(得分:0)

接下来我留下@Rohit 提出的代码,但更新到 2021 年

package com.example;
 
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter; 
public class Main { 
    public static void main(String []args) throws IOException, Exception
    {
        File myObj = new File("D:\\x\\x\\x\\x\\video.mp4");
        FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(myObj.getAbsoluteFile());
        frameGrabber.start(); 
        Frame f; 
        try {
            Java2DFrameConverter c = new Java2DFrameConverter(); 
            f = frameGrabber.grab();  
            BufferedImage bi = c.convert(f);
            ImageIO.write(bi,"png", new File("D:\\x\\x\\x\\x\\img.png"));
            frameGrabber.stop();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
}