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
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!!!