Вы можете использовать код ниже:
String SrcPath="/sdcard/Pictures/Video Task/";
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(SrcPath);
String METADATA_KEY_DURATION = mediaMetadataRetriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
Bitmap bmpOriginal = mediaMetadataRetriever.getFrameAtTime(0);
int bmpVideoHeight = bmpOriginal.getHeight();
int bmpVideoWidth = bmpOriginal.getWidth();
Log.d("LOGTAG", "bmpVideoWidth:'" + bmpVideoWidth + "' bmpVideoHeight:'" + bmpVideoHeight + "'");
byte [] lastSavedByteArray = new byte[0];
float factor = 0.20f;
int scaleWidth = (int) ( (float) bmpVideoWidth * factor );
int scaleHeight = (int) ( (float) bmpVideoHeight * factor );
int max = (int) Long.parseLong(METADATA_KEY_DURATION);
for ( int index = 0 ; index < max ; index++ )
{
bmpOriginal = mediaMetadataRetriever.getFrameAtTime(index * 1000, MediaMetadataRetriever.OPTION_CLOSEST);
bmpVideoHeight = bmpOriginal == null ? -1 : bmpOriginal.getHeight();
bmpVideoWidth = bmpOriginal == null ? -1 : bmpOriginal.getWidth();
int byteCount = bmpOriginal.getWidth() * bmpOriginal.getHeight() * 4;
ByteBuffer tmpByteBuffer = ByteBuffer.allocate(byteCount);
bmpOriginal.copyPixelsToBuffer(tmpByteBuffer);
byte [] tmpByteArray = tmpByteBuffer.array();
if ( !Arrays.equals(tmpByteArray, lastSavedByteArray))
{
int quality = 100;
String mediaStorageDir="/sdcard/Pictures/Video Task/";
File outputFile = new File(mediaStorageDir , "IMG_" + ( index + 1 )
+ "_" + max + "_quality_" + quality + "_w" + scaleWidth + "_h" + scaleHeight + ".png");
Log.e("Output Files::>>",""+outputFile);
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(outputFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap bmpScaledSize = Bitmap.createScaledBitmap(bmpOriginal, scaleWidth, scaleHeight, false);
bmpScaledSize.compress(Bitmap.CompressFormat.PNG, quality, outputStream);
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
lastSavedByteArray = tmpByteArray;
}
}
capturedImageView.setImageBitmap(bmpOriginal);
mediaMetadataRetriever.release();