J'essaie d'extraire plusieurs images d'une vidéo, mais elle génère parfois une exception fatale. Ce que je suis en train de faire ici, c'est que je vais chercher le cadre pendant un certain temps et que je tourne si l'orientation est portrait. La raison de l'échec peut être un problème de mémoire. S'il vous plaît suggérer où je me trompe.Erreur lors de la récupération de plusieurs images d'une vidéo via FFmpegMediaMetadataRetriever
private ArrayList<Bitmap> getFrames() {
ArrayList<Bitmap> bmFrames = new ArrayList<>();
Bitmap bmp = null;
Bitmap orientedBitmap = null;
try {
int baseTime = Integer.parseInt(model.getDuration());
baseTime = baseTime/11 * 1000;
baseTimeArray = new int[11];
for (int i = 0; i < 11; i++) {
baseTimeArray[i] = baseTime * (i);
Log.d("TAG", "fetching frame from " + baseTimeArray[i]);
try {
FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever();
mmr.setDataSource(new File(sourceFilePath).getAbsolutePath());
bmp = getBitmapViaFFMPEG(baseTimeArray[i], mmr);
if (rotationMetaData != null) {
Matrix matrix = new Matrix();
matrix.postRotate(90);
//Bitmap scaledBitmap = Bitmap.createScaledBitmap(bmp,50,50,true);
if (bmp != null)
orientedBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
else
Log.d(TAG,"returned bitmap was null");
}
//Log.d("TAG", "rotation: " + rotation);
mmr.release();
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
} catch (RuntimeException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
if (rotationMetaData != null)
bmFrames.add(orientedBitmap);
else
bmFrames.add(bmp);
}
} catch (Exception e) {
e.printStackTrace();
}
return bmFrames;
}
Erreur journal
Salut. Avez-vous résolu votre problème? Si vous pouvez vous s'il vous plaît partager des solutions? –
Je vais partager la solution lundi. –
ok Merci! @Lalit –