尝试检索帧时,MediaMetadataRetriever始终返回null

时间:2013-12-04 13:12:17

标签: android android-mediaplayer android-video-player

我正试图通过网址获取流媒体视频的第一帧。 getFrameAtTime似乎总是返回null而没有Exception。

        @Override
        protected Bitmap doInBackground(String... strings) {
            String url = strings[0];
            MediaMetadataRetriever retriever = new MediaMetadataRetriever(); //Is actually available in Api levels < 10 all the way to 5
            try {
                retriever.setDataSource(url, new HashMap<String, String>());
                return retriever.getFrameAtTime(1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
            } catch (IllegalArgumentException ex) {
                ex.printStackTrace();
                Log.e(TAG, "problem retrieving frame " + ex);
            } catch (RuntimeException ex) {
                ex.printStackTrace();
                Log.e(TAG, "problem retrieving frame " + ex);
            } finally {
                try {
                    retriever.release();
                } catch (RuntimeException ex) {
                    Log.e(TAG, "problem retrieving frame " + ex);
                }
            }
            return null;
        }

1 个答案:

答案 0 :(得分:1)

您是否尝试过FFmpegMediaMetadataRetriever?:

FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
retriever.setDataSource(url, new HashMap<String, String>());
Bitmap b = retriever.getFrameAtTime(1000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST_SYNC); // get frame at one second
retriever.release();