MediaMetadataRetriever

MediaMetadataRetriever

我正在尝试从视频文件中提取缩略图,使用情况是,我希望视频每隔一秒都有一个位图图像,我尝试使用MediaMetadataRetriever,但问题是它返回相同的帧,无论时间是什么。
这是我试过的密码

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            retriever.setDataSource(PATH);
             for(int i = 0; i< 10 ;i++) {

                Bitmap bmp = retriever.getFrameAtTime(i * 1000, MediaMetadataRetriever.OPTION_CLOSEST);
                imgList.add(bmp);
                System.out.println(imgList.size());

            }

有没有其他可行的方法周期性地获得帧?

最佳答案

MediaMetadataRetriever的时间是以微秒为单位指定的。
要在2秒时获得帧,您必须调用:

Bitmap bmp = retriever.getFrameAtTime(2 * 1000000, MediaMetadataRetriever.OPTION_CLOSEST);

我发现MediaMetadataRetriever会在一整秒钟内返回相同的帧,而不考虑这个非常精确的时间戳,但对于您的需求,它应该可以工作。

09-28 02:24