您好我正在处理图像处理,我需要转换所有类型 视频到一系列帧。
我已经尝试使用JCodec 仅使用.mp4类型的视频。
代码显示我之前从视频中抓取帧的行为
try {
int frameNumber = 0;
BufferedImage frame = null;
for(int i=0;i<100;i++)
{
frameNumber = i;
//video from which frames can be retrieved, declare frame number,
//returns numbered frame from video
frame = FrameGrab.getFrame(new File("D:\\Traffic.mp4\\"), frameNumber);
//write frame as image declare image format and file path where image
//is to be write
ImageIO.write(frame, "png", new File("D:\\Frames2\\frame_"+frameNumber+".png\\"));
}
System.out.println("Finished");
} catch (Exception e) {
e.printStackTrace();
}
在上面的代码中,我正在尝试阅读Traffic.mp4视频并获取 前100帧。这个代码适用于所有类型的.mp4 视频,但是当我尝试使用 .flv,.avi类型的视频时,它正在提供 我 NullPointer异常。
还有任何其他Java API 我可以尝试接受所有类型的 视频。
答案 0 :(得分:0)
您可以尝试使用xuggler,它是FFMpeg for java的包装器。 FFMpeg支持处理单个帧,所以我猜Xuggler离它不远,演示DecodeAndCaptureFrames.java似乎正在做你想要的。
答案 1 :(得分:0)
看看Marvin Framework。它使用JavaCV作为摄像机和媒体文件的接口。请查看此Example,了解如何从WMV文件中获取每个视频帧以进行图像处理。
在JavaCV组中,有Discussion支持的文件格式。