经过我的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出现空错误。
答案 0 :(得分:0)
您是否认为这是一个没有图形内容的信息框?
有些数据流没有图形内容,如此处简要提到的
https://en.wikipedia.org/wiki/MPEG-4_Part_14
可以通过查看更好,更深入的格式规范来找到更多信息
这个SO问题具有更好的指针和指向规范的链接: MP4 File Format Specification