版权声明:欢迎关注我的Github:https://github.com/dengyuhan,转载请注明出处,欢迎转载 https://blog.csdn.net/aa464971/article/details/72784142
转载请注明出处:
http://blog.csdn.net/aa464971/article/details/72784142
Github地址:
https://github.com/dengyuhan/MediaMetadataRetrieverCompat
简介
MediaMetadataRetrieverCompat 内部有两种实现,各有特点
FFmpegMediaMetadataRetriever
基于FFmpegMediaMetadataRetriever,体积大但取帧速度快
MediaMetadataRetriever
基于原生API,不会增加apk体积但取帧慢
示例apk
效果演示
快速开始
//核心库 必选
implementation 'com.dyhdyh.compat.mmrc:media-metadata-retriever-compat:1.0.7'
//当需要FFmpegMediaMetadataRetriever时必选
implementation 'com.dyhdyh.remake:FFmpegMediaMetadataRetriever-java:1.0.14'
implementation 'com.dyhdyh.remake:FFmpegMediaMetadataRetriever-armeabi-v7a:1.0.14'
//可选平台
implementation 'com.dyhdyh.remake:FFmpegMediaMetadataRetriever-armeabi:1.0.14'
implementation 'com.dyhdyh.remake:FFmpegMediaMetadataRetriever-arm64-v8a:1.0.14'
implementation 'com.dyhdyh.remake:FFmpegMediaMetadataRetriever-mips:1.0.14'
implementation 'com.dyhdyh.remake:FFmpegMediaMetadataRetriever-x86:1.0.14'
implementation 'com.dyhdyh.remake:FFmpegMediaMetadataRetriever-x86_64:1.0.14'
初始化(三种模式)
//自动 - 推荐
MediaMetadataRetrieverCompat mmrc = MediaMetadataRetrieverCompat.create();
//FFmpeg
//MediaMetadataRetrieverCompat mmrc = MediaMetadataRetrieverCompat.create(MediaMetadataRetrieverCompat.RETRIEVER_FFMPEG);
//原生API
//MediaMetadataRetrieverCompat mmrc = MediaMetadataRetrieverCompat.create(MediaMetadataRetrieverCompat.RETRIEVER_ANDROID);
设置输入源
//本地文件
mmrc.setDataSource(inputFile);
//网络视频(建议放在子线程)
mmrc.setDataSource(url, headers);
//Uri
mmrc.setDataSource(context, uri);
获取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);