Android 视频截图

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

                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);
                }

时间: 2024-10-12 12:22:13

Android 视频截图的相关文章

Android视频录制从不入门到入门系列教程(三)————视频方向

运行Android视频录制从不入门到入门系列教程(二)————显示视频图像中的Demo后,我们应该能发现视频的方向是错误的. 由于Android中,Camera给我们的视频图片的原始方向是下图这个样子的: 就是说,即使你是竖着拿手机的,Camera提供给你的视频图像的方向还是上图那样横着的图片. 我们可以通过下述方向改变Camera提供的视频图像的方法: camera.setDisplayOrientation(90); 让图像顺时针旋转90度,视频图像的方向就正常的. 本篇文章DEMO下载.

canvas与html5实现视频截图功能

这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上已经加载完成了这个视频,这样才能够方便的对其操作.如果使用下面直接嵌入<video>标签的方式: 1 2 3 4 5 <video loop controls id="testmp4" width="500" height="400"

indows下PHP通过ffmpeg给上传的视频截图详解

windows下PHP通过ffmpeg给上传的视频截图详解,php_ffmpeg.dll安装下载,找了很久php_ffmpeg.dll的下载地址和应用,发现有用的资源很少,现在问题解决了,贴出来跟大家分享一下: 首先要安装PHP的ffmpeg扩展,我们需要php_ffmpeg.dll文件和一些其他的辅助文件,        这里整理了一下提供给大家: ffmpeg-php-win32-all.rar: 解压后你将得到5个文件,将avcodec-51.dll, avformat-51.dll, a

利用FFmpeg玩转Android视频录制与压缩(二)&lt;转&gt;

转载出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个月,身边很多人的女票已经分了又合,合了又分,本屌依旧骄傲单身.上一次啊我们大致说了一些简单的FFmpeg命令以及Java层简单的调用方式,然后有很多朋友在github或者csdn上给我留言,很多时候我都选择避而不答,原因是本库以前用的so包是不开源的,我根本改不了里面东西.但是这一次啊我们玩点大的,我重新编译了FFm

HTML5 CSS3 诱人的实例 :模仿优酷视频截图功能

一般的视频网站对于用户上传的视频,在用户上传完成后,可以对播放的视频进行截图,然后作为视频的展示图.项目中也可以引入这样的功能给用户一种不错的体验,而不是让用户额外上传一张展示图. 效果图: 看起来还是很不错,下面我给大家分析下,极其核心代码很简单: _canvas = document.createElement("canvas"); _ctx = _canvas.getContext("2d"); _ctx.fillStyle = '#ffffff'; _ctx

android视频录制、另一部手机实时观看方案

最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:8080网址观看. 这种方案可以参考 ipcamera-for-android开源项目,网址  http://code.google.com/p/ipcamera-for-android/source/checkout 可以运行的源代码可以在这下载            http://download.

iOS 对网络视频采集视频截图

在播放网络视频是  经常可以看到播放按钮下面是该制品的某个截图 : 一般情况下  后台服务器是可以把视频截图一起返回给你 你直接拿到图片显示就可以了 但是当后台没有提供时  我们也可以根据视频地址 自己去截取视频截图: //获取视频封面 videoURL:视频网络地址 - (UIImage*)thumbnailImageForVideo:(NSURL *)videoURL { AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL

Android视频录制命令screenrecord

Android视频录制命令screenrecord 你要知道: screenrecord是一个shell命令 支持Android4.4(API level 19)以上 支持视频格式: mp4 一些限制 某些设备可能无法直接录制,原因是分辨率太高,如果遇到此类问题,请试着指定较低的分辨率 不支持录制过程中屏幕旋转,如果录制过程中旋转,有可能画面被切断 录制视频的时候声音不会被录下来 开始录制命令: adb shell screenrecord /sdcard/demo.mp4 说明:录制手机屏幕,

Android视频下载地址都有哪些?

移动互联网的飞跃也让很多科技型人才找到了新的发展起点,提升自身的科技技能,让自己的未来获得提升,是很多科技型人才的根本起点.很多开发者都纷纷转型到Android,这些传统的开发者想要从事移动互联网行业的开发,需要参加培训,参加Android培训来提升自身的技术实力,传智播客Android培训行业的领导者,为各大企业很多企业输送了大量的Android视频 人才,来提升人才的战略. 不难发现,公交地铁上.站牌等车.闲暇无聊时间……手游已经成为目前最流行的娱乐休闲方式,手游开发者和开发公司纷纷把登上A