android - 定期从视频文件中检索缩略图

标签 android android-mediaplayer android-video-player

我正在尝试从视频文件中提取缩略图图像,用例是我想要视频的每隔一秒都有一个位图图像,我尝试使用 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());

            }

是否有其他可行的解决方案来定期获取 Frames?

最佳答案

MediaMetadataRetriever 的时间以微秒为单位指定。

要在 2 秒处获取帧,您必须调用:

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

我发现 MediaMetadataRetriever 在整整一秒内返回相同的帧,无论这个非常精确的时间戳如何,但根据您的要求,它应该可以工作。

关于android - 定期从视频文件中检索缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11881641/

相关文章:

android - 在 android 4.2.2+ 上覆盖状态栏

java - getSupportFragmentManager() 在我的适配器类中不起作用?

android - 为什么 MediaPlayer 在创建它的实例时会抛出 NOT present 错误?

android - 如何将 MediaPlayer 用于 fragment 中的 SurfaceView

安卓 MediaCodec 解码器 : Slow Down Video Playback

android - 在没有 Bitmap.CompressFormat 的情况下将位图转换为字节数组

android - RxJava 2 Retrofit 和动态 url 以及 @url 注释

Android 每隔 n 毫秒播放一次提示音

android - onPause后TextureView播放视频变黑

android - Android : change visual properties (e. g 中的视频。饱和度、亮度)