Android 获取视频所有帧图集合

整体流程

首先,我们需要获取视频文件的路径,然后使用 MediaMetadataRetriever 类来获取视频所有帧的图像,并将这些图像保存到一个集合中。

以下是整个流程的步骤:

步骤 描述
1 获取视频文件的路径
2 创建 MediaMetadataRetriever 对象
3 获取视频的总时长
4 遍历视频的每一帧,并保存到集合中

代码实现

步骤1:获取视频文件的路径

// 引用形式的描述信息
String videoPath = "/storage/emulated/0/DCIM/Video/sample.mp4";

步骤2:创建 MediaMetadataRetriever 对象

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(videoPath);

步骤3:获取视频的总时长

// 获取视频时长,单位为毫秒
String duration = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long videoDuration = Long.parseLong(duration);

步骤4:遍历视频的每一帧,并保存到集合中

List<Bitmap> frameList = new ArrayList<>();

for (long i = 0; i < videoDuration; i += 1000) {
    Bitmap frame = retriever.getFrameAtTime(i * 1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
    frameList.add(frame);
}

类图

classDiagram
    class MediaMetadataRetriever {
        + setDataSource()
        + extractMetadata()
        + getFrameAtTime()
    }

通过以上步骤,你可以成功获取到视频的所有帧图集合。希望对你有所帮助,加油!