Видеокадр захвата Android

Мне нужно получить кадр видеофайла (он может быть на 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)

7
задан Buda Gavril 17 March 2011 в 10:09
поделиться