getFrameAtTime()返回相同的帧

时间:2015-11-30 20:30:24

标签: android

我正在尝试从相机捕获的视频文件中检索帧。 我写了一个函数来这样做,我在不同时间的循环中使用它,每100000(微秒)接收一次帧:

public static Bitmap getVideoFrame(long time) {
        MediaMetadataRetriever mdr = new MediaMetadataRetriever();
        mdr.setDataSource(path);
        try {
            return mdr.getFrameAtTime((time),MediaMetadataRetriever.OPTION_CLOSEST);
        } catch (IllegalArgumentException ex) {
            ex.printStackTrace();
        } catch (RuntimeException ex) {
            ex.printStackTrace();
        } finally {
            try {
              mdr.release();
            } catch (RuntimeException ex) {
            }
        }

        return null;
    }

我知道给定的时间必须是微秒,我试过。无论如何,getFrameAtTime()始终返回相同的帧。

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,但我找不到使用MediaMetadataRetriever的解决方案。

但是,我确实使用了这个:https://github.com/wseemann/FFmpegMediaMetadataRetriever

希望它有所帮助。