为什么经过几次迭代后Bufferedimage等于null?

时间:2019-05-24 15:58:18

标签: java javacv

经过我的for循环几次迭代后,Bufferedimage变量仅收到一个null。前2-3次通常可以。

我尝试了不同的mp4文件,看看是否只是视频出现了问题。

public void vidimg()throws IOException{
    Java2DFrameConverter converter = new Java2DFrameConverter();
    FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(mp4Path);

    Frame frame;
    int imgNum = 0;

    frameGrabber.start();

    System.out.println("Video has " + frameGrabber.getLengthInFrames() + " frames and has frame rate of "+ frameGrabber.getFrameRate());

    try {
        for(int i=frameJump;i<=frameGrabber.getLengthInFrames();i+=frameJump){
            imgNum++;
            frameGrabber.setFrameNumber(i);
            frame = frameGrabber.grab();
            BufferedImage bi = converter.convert(frame);
            String path = imgPath + File.separator + imgNum + ".jpg";
            ImageIO.write(bi, imgType, new File(path));
        }
        frameGrabber.stop();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我希望每2帧视频接收一次图像,但是Bufferedimage出现空错误。

1 个答案:

答案 0 :(得分:0)

您是否认为这是一个没有图形内容的信息框?

有些数据流没有图形内容,如此处简要提到的

https://en.wikipedia.org/wiki/MPEG-4_Part_14

可以通过查看更好,更深入的格式规范来找到更多信息

这个SO问题具有更好的指针和指向规范的链接: MP4 File Format Specification