&引用;错误的src图像指针“;在JavaCV中的FFmpegFrameGrabber上调用setFrameNumber()后出错
我正在创建一个小的视频编辑器,目前正在尝试在预览窗口中显示视频文件。为此,我想使用JavaCVs FFmpegFrameGrabber在特定位置获取视频帧 我找到了一种方法,将&引用;错误的src图像指针“;在JavaCV中的FFmpegFrameGrabber上调用setFrameNumber()后出错,java,opencv,video,javacv,video-editing,Java,Opencv,Video,Javacv,Video Editing,我正在创建一个小的视频编辑器,目前正在尝试在预览窗口中显示视频文件。为此,我想使用JavaCVs FFmpegFrameGrabber在特定位置获取视频帧 我找到了一种方法,将抓取器的frameNumber变量设置为所需的帧。但是,这只会导致显示文件的第一帧,并在错误旁边重复打印有关文件的一些信息(如果需要查看,请告诉我,它有点长且凌乱): [swscaler@000001927a7d3000]错误的src图像指针 这是我的帧抓取类: public class Video { priv
抓取器的frameNumber
变量设置为所需的帧。但是,这只会导致显示文件的第一帧,并在错误旁边重复打印有关文件的一些信息(如果需要查看,请告诉我,它有点长且凌乱):
[swscaler@000001927a7d3000]错误的src图像指针
这是我的帧抓取类:
public class Video {
private FFmpegFrameGrabber grabber;
private final static Java2DFrameConverter converter = new Java2DFrameConverter();
public Video(File file) {
this.grabber = new FFmpegFrameGrabber(file);
try {
this.grabber.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public BufferedImage grabFrame(int framePos) throws Exception {
BufferedImage frame;
grabber.grabImage(); // Without this done before, the image is just black
grabber.setFrameNumber(framePos);
frame = converter.convert(grabber.grabImage());
return frame;
}
}
我非常感谢你的回答 调用setFrameNumber()
仅在大约且仅在恒定帧速率下工作。如果改用setTimestamp()
会发生什么?你也会得到一个错误吗?如果是这样的话,这可能是文件的一个问题…嗯,这有点尴尬,但事实证明,我只是给这个方法一个超出其长度的位置,因为我的公式被破坏了。。。所以,嗯,它现在起作用了。不过,这些错误消息仍然会不时弹出。