Necesito obtener un fotograma de un archivo de video (puede estar en sdcard, cache dir o app dir). Tengo el paquete android.media en mi aplicación y en mi interior tengo la clase MediaMetadataRetriever. Para obtener el primer fotograma en un mapa de bits, uso código:android capture video frame
public static Bitmap getVideoFrame(Context context, Uri videoUri) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setMode(MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY);
retriever.setDataSource(context, videoUri);
return retriever.captureFrame();
} catch (IllegalArgumentException ex) {
throw new RuntimeException();
} catch (RuntimeException ex) {
throw new RuntimeException();
} finally {
retriever.release();
}
}
Pero esto no está funcionando. Lanza una excepción (java.lang.RuntimeException: setDataSource failed: status = 0x80000000) cuando establezco el origen de datos. ¿Sabes cómo hacer que este código funcione? ¿O tiene alguna solución similar (simple) sin usar ffmpeg u otras bibliotecas externas? videoUri es un uri válido (el reproductor multimedia puede reproducir video desde ese URI)
puede proporcionar una muestra para su pregunta, he intentado mucho para este tipo de muestra, finalmente tuve que preguntarle. – ManishSB