Comment faire pour obtenir l'image à partir de fichier vidéo sous android
La MediaMetadataRetriever.getFrameAtTime() renvoie toujours la même image lors de l'appeler.
Jetez un oeil à mon 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;
}
}
Cette méthode retourne toujours mêmes images
C'est le comportement que vous pouvez vous attendre, selon la documentation: ", Cette méthode trouve une image représentant près de l'heure en considérant l'option si possible, et la renvoie sous la forme d'une image bitmap. Retourne: Une image contenant un représentant de l'image de la vidéo, qui peut être null, si un tel cadre ne peut pas être récupéré."
merci pour la réponse comment puis-je obtenir des images à partir de fichiers vidéo. Jetez un Oeil à mon question
Après 3 ans, m encore à essayer de trouver qu'il est difficile pour la solution...un connaît la solution???
Même ici, après 2 ans de plus...
merci pour la réponse comment puis-je obtenir des images à partir de fichiers vidéo. Jetez un Oeil à mon question
Après 3 ans, m encore à essayer de trouver qu'il est difficile pour la solution...un connaît la solution???
Même ici, après 2 ans de plus...
OriginalL'auteur Dwivedi Ji | 2012-04-17
Vous devez vous connecter pour publier un commentaire.
Vous allez avoir à utiliser quelque chose comme FFMPEG pour récupérer les images.
Vous devrez utiliser le NDK, et de compiler FFMPEG pour Android; malheureusement, il ne va pas être très facile.
Un couple de points de départ:
http://ffmpeg.org/
ffmpeg pour un android (à l'aide de tutoriel: "ffmpeg et Android.mk")
Bonne chance!
OriginalL'auteur Zambotron
Je ne sais pas quelle est la durée de votre vidéo, mais le temps de l'utiliser dans le long var, comme le temps
getTimeAtFrame
doit être exprimée en MICRO secondesex: une vidéo de 1 seconde ont 1000000 USeconds, si l'utilisation d'une très courte période (comme vous), vous devez très chanceux pour récupérer la première image que la vidéo!!!
J'ai eu ce problème aussi, et je suis sûr qu'il n'a rien à voir avec l'intervalle de temps qui est utilisé. Et l'exemple de l'OP est à l'aide de micro-secondes.
OriginalL'auteur Morgan Mora
Léon Pelletier est droit. Le problème est que MediaMetadataRetriever.getFrameAtTime() ne pouvait extraire des images clés à partir de la vidéo à deuxième niveau. Par exemple, si une vidéo a environ 4 secondes, vous pouvez obtenir 4
ou 5 images différentes. Pour obtenir toutes les images vidéo, veuillez vous référer à MediaCodec.
Ma réponse originale à cette question ont répondu la même chose-cadre en question, et je l'ai modifié de sorte qu'il répond le titre aussi.
OriginalL'auteur DeTac