Android 视频截图方法
2016-04-25 09:39
501 查看
转载出处:http://blog.csdn.net/matrix_laboratory/article/details/43267907
如果要获取屏幕截图的话直接(电源键+音量下)
采用MediaMetadatRetriever.getFrameAtTime方法获取视频的该帧图像.
需要注意的是:
该时间点的单位是微秒,普通时间的单位都是毫秒;
option :
OPTION_CLOSEST:
获取离timeUs最近的一帧图像.
此函数获取的帧是Sync Frame, 由于在timeUs此时间点不一定恰好有一个Sync Frame, 所以会有一定的误差.
获取Sync Frame时 有3中情况:
(1) 在timeUs处恰好有一个Sync Frame
(2) 获取timeUs前一个Sync
Frame
(3) 获取timeUs后一个Sync
Fram
OPTION_PREVIOUS_SYNC:
(1) or (2)
OPTION_CLOSEST_SYNC: 获取离timeUs最近的一个Sync Frame
1. 前言
本文讨论的是获取视频在某个时间点的图像, 而非屏幕截图.如果要获取屏幕截图的话直接(电源键+音量下)
2. 获取视频截图
2.1 MediaMetadataRetriever
MediaMetadataRetriever从名称上看可以获取视频的Metadata信息, 此外还可以获取视频的截图, 其中抽取视频的缩略图就是采用此函数实现的.
2.2 使用方法
采用MediaMetadatRetriever.getFrameAtTime方法获取视频的该帧图像.
public Bitmap getFrameAtTime (long
timeUs)
public Bitmap getFrameAtTime (long
timeUs, int option)
需要注意的是:该时间点的单位是微秒,普通时间的单位都是毫秒;
option :
OPTION_CLOSEST:
获取离timeUs最近的一帧图像.
此函数获取的帧是Sync Frame, 由于在timeUs此时间点不一定恰好有一个Sync Frame, 所以会有一定的误差.
获取Sync Frame时 有3中情况:
(1) 在timeUs处恰好有一个Sync Frame
(2) 获取timeUs前一个Sync
Frame
(3) 获取timeUs后一个Sync
Fram
OPTION_PREVIOUS_SYNC:
(1) or (2)
OPTION_NEXT_SYNC: (1) or (3)
OPTION_CLOSEST_SYNC: 获取离timeUs最近的一个Sync Frame
[java] view plain copy MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try { retriever.setDataSource(mFilePath); Bitmap bitmap = retriever.getFrameAtTime(miCurPos*1000); String path = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM + "/Camera"; path += Tools.getDisplayName(mFilePath) + "_" + Tools.IntToTimeString(miCurPos) + "_" + ".png"; Tools.saveBitmap(bitmap, path); sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(path)))); } catch (IllegalArgumentException e) { e.printStackTrace(); VideoLogger.e(TAG, "MediaMetadataRetriever.setDataSource Failed: " + mFilePath); ShowToast(mResources.getString(R.string.info_screen_shot_failed), 0); }
相关文章推荐
- 测量屏幕的宽高
- java/android 设计模式之单例模式
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android 通知栏Notification的整合
- Android布局优化之include
- Android——BroadcastReceiver
- Android 添加自定义BOOT_COMPLETED广播避免延迟
- Android 点击按钮同时更换按钮背景颜色和按钮文本颜色
- Android KeyCode列表
- Hello world!
- Android多媒体分析(二)MediaStore
- Android——Service装取数据
- (4.1.11.1)Android中使用RecyclerView和CardView实现瀑布流效果(StaggeredGrid)
- android BroadcastReceiver
- (4.6.10)Android中MVP模式与MVC模式比较(含示例)
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- Android Scroll分析——滑动效果产生
- Android的AadapterView组件中的几个常用实现类
- Android 富有动感的底部弹出框
- Android实现拨打电话功能