我正在尝试使用FFmpegFrameFilter和JavaCV的-grabber更改视频的帧速率。但是,filter.pull();
始终返回null。
我基本上已经尝试了推拉框架的每种组合,但是似乎没有任何作用。
这是我的代码:
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(new File("input.mp4"));
grabber.start();
FFmpegFrameFilter filter = new FFmpegFrameFilter("fps=fps=60",null,grabber.getImageWidth(),grabber.getImageHeight(),0);
filter.setVideoInputs(1);
filter.start();
Java2DFrameConverter converter = new Java2DFrameConverter();
for (int i = 0; i < 10; i++) {
//Push the newly grabbed frame to the filter.
Frame frame = grabber.grabImage();
int n = frame.image.length - 1;
filter.pushImage(n > 0 ? n : 0,frame.imageWidth,frame.imageHeight,frame.imageDepth,frame.imageChannels,frame.imageStride,grabber.getPixelFormat(),frame.image);
//Pull the frame from the filter,convert it to a BufferedImage,and save it.
//This line throws an IllegalArgumentException,stating the image is null.
ImageIO.write(converter.convert(filter.pullImage()),"jpg",new File(outputPath + i + ".jpg"));
}
我最好的猜测是我给了pushImage(...)
错误的论据,因为我不确定第一个论点n
应该是什么。