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

Why is Bufferedimage equaling null after a few iterations?

经过我的 for 循环几次迭代后,Bufferedimage 变量收到一个空值。前 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 的空错误。

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

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

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

可以通过查看更好、更详细的 in-depth 格式规范来找到更多信息

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