Мне нужно получить кадр видеофайла (он может быть на SD-карте, в каталоге кеша или в каталоге приложения). У меня есть пакет android.media в моем приложении, а внутри у меня есть класс MediaMetadataRetriever. Чтобы превратить первый кадр в растровое изображение, я использую код:
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();
}
}
Но это не работает. Он выдает исключение (java.lang.RuntimeException: setDataSource failed: status = 0x80000000), когда я устанавливаю источник данных. Вы знаете, как заставить этот код работать? Или у вас есть подобное (простое) решение без использования ffmpeg или других внешних библиотек? videoUri - действительный uri (медиаплеер может воспроизводить видео с этого URI)