将所有类型的视频分离成帧(一系列图像)



嗨,我正在处理图像处理,需要转换所有类型视频的一系列帧

我已经尝试了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类型的视频时,它正在提供meNullPointer异常

那么是否有任何其他Java API我可以尝试接受所有类型的视频。

您可以尝试使用Xugler,一个用于java的FFMpeg包装器。FFMpeg支持处理单个帧,所以我想Xuggler离它不远了,演示DecodeAndCaptureFrames.java似乎在做你想要的事情。

看看Marvin Framework。它使用JavaCV作为相机和媒体文件的接口。查看此示例,展示如何从WMV文件中获取每个视频帧以用于图像处理。

在JavaCV组中,有一个关于支持的文件格式的讨论。

最新更新