您的位置:首页 > 移动开发 > Android开发

MediaMetadataRetrieverCompat - 获取视频信息与缩略图兼容方案

2017-05-27 20:07 239 查看
转载请注明出处:

http://blog.csdn.net/aa464971/article/details/72784142

Android交流群:146262062

Github地址:

https://github.com/dengyuhan/MediaMetadataRetrieverCompat

简介

MediaMetadataRetrieverCompat 内部有两种实现,各有特点

FFmpegMediaMetadataRetriever


       基于FFmpegMediaMetadataRetriever,体积大但取帧速度快

MediaMetadataRetriever


       基于原生API,不会增加apk体积但取帧慢

示例apk



效果演示







快速开始

compile 'com.dyhdyh.compat.mmrc:media-metadata-retriever-compat:1.0.6'

//可选(如果不引入则只使用原生API)
compile 'com.github.wseemann:FFmpegMediaMetadataRetriever:1.0.14'


初始化(三种模式)

//自动 - 推荐
MediaMetadataRetrieverCompat mmrc = new MediaMetadataRetrieverCompat();
//FFmpeg
//MediaMetadataRetrieverCompat  mmrc = new MediaMetadataRetrieverCompat(MediaMetadataRetrieverCompat.RETRIEVER_FFMPEG);
//原生API
//MediaMetadataRetrieverCompat  mmrc = new MediaMetadataRetrieverCompat(MediaMetadataRetrieverCompat.RETRIEVER_ANDROID);


设置路径

mmrc.setDataSource(path);


获取Metadata信息

String width = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_VIDEO_WIDTH);
String height = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_VIDEO_HEIGHT);
String rotation = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_VIDEO_ROTATION);
String numTracks = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_NUM_TRACKS);
String title = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_TITLE);
String album = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_ALBUM);
String albumArtist = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_ALBUMARTIST);
String author = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_AUTHOR);
String duration = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_DURATION);
String framerate = mmrc.extractMetadata(MediaMetadataRetrieverCompat.METADATA_KEY_CAPTURE_FRAMERATE);
...


获取缩略图

//获取第一帧原尺寸图片
mmrc.getFrameAtTime();

//获取指定位置的原尺寸图片 注意这里传的timeUs是微秒
mmrc.getFrameAtTime(timeUs, option);

//获取指定位置指定宽高的缩略图
mmrc.getScaledFrameAtTime(timeUs, MediaMetadataRetrieverCompat.OPTION_CLOSEST, width, height);

//获取指定位置指定宽高并且旋转的缩略图
mmrc.getScaledFrameAtTime(timeUs, MediaMetadataRetrieverCompat.OPTION_CLOSEST, width, height, rotate);


Android交流群:146262062
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 视频 元数据