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

时间:2014-03-13 13:09:13

标签: java video image-processing

  

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

     

我已经尝试使用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 我可以尝试接受所有类型的   视频。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用xuggler,它是FFMpeg for java的包装器。 FFMpeg支持处理单个帧,所以我猜Xuggler离它不远,演示DecodeAndCaptureFrames.java似乎正在做你想要的。

答案 1 :(得分:0)

看看Marvin Framework。它使用JavaCV作为摄像机和媒体文件的接口。请查看此Example,了解如何从WMV文件中获取每个视频帧以进行图像处理。

在JavaCV组中,有Discussion支持的文件格式。