How to get the frame from video file in android

Dwivedi Ji picture Dwivedi Ji · Apr 17, 2012 · Viewed 12.4k times · Source

The MediaMetadataRetriever.getFrameAtTime() always returns same frames when ever call. Have a look my code

private ArrayList<Bitmap> getFrames(String path){
    try {
        ArrayList<Bitmap> bArray = new ArrayList<Bitmap>();
        bArray.clear();
        MediaMetadataRetriever mRetriever = new MediaMetadataRetriever();
        mRetriever.setDataSource(getDataSource(path));

        for (int i = 3000; i <60000; i=i+5000) {
            bArray.add(mRetriever.getFrameAtTime(i, MediaMetadataRetriever.OPTION_CLOSEST_SYNC));

        }

        return bArray;
    } catch (Exception e) {
        // TODO: handle exception

        return null;

    }
}

This method always return same frames

Answer

Morgan Mora picture Morgan Mora · Apr 23, 2013

I don't know how long is your video, but the time to use in the long var as the time for getTimeAtFrame must be expressed in MICRO seconds

ex: a video of 1 second have 1000000 USeconds, if use a very short period (like you) you must very lucky for retrieve the first frame only that you video have!!!