2011.09.27——— android 视频缩略图之MediaMetadataRetriever
参考:
http://www.ophonesdn.com/forum/thread-2973-1-1.html
http://topic.csdn.net/u/20100315/10/2726b427-ca14-4e06-bd44-a6a351f8c52a.html
http://www.pin5i.com/showtopic-android-generate-thumbnails-for-multimedia-files.html
1、
2.2之后 获得缩略图就简单了 因为用了ThumbnailUtils类,可以
Bitmap b = ThumbnailUtils.createVideoThumbnail(path,Video.Thumbnails.MICRO_KIND);
ImageView iv = new ImageView(this);
参见:
http://lipeng88213.iteye.com/blog/835183
2、
但是2.2之前呢 这个问题就比较郁闷了 查了查资料
其实 我们可以用MediaMetadataRetriever这个类
但是 里面有个问题
1.0之后 这个类被隐藏了 貌似2.3之后这个类又出现了吧
隐藏了。。。。那怎么办呢?别慌 我们自有办法 步骤如下:
一、找到MediaMetadataRetriever的源码 复制到你的工程里面去
切忌:
包名必须与MediaMetadataRetriever本身在系统里面的包名一样,也就是包名必须为android.media
二、找到so文件 新建一个和src同级别的libs文件夹 把so文件复制进去 这个so文件的名字大概为libmedia_jni.so
可能有人要问 如何获得so文件呢 方法有两个
A:如果你有android的系统源码 你直接可以搜索libmedia_jni.so 就能得到
B:在androidsdk目录——tools——ddms.bat 启动ddms
Device——File Explore
打开一个文件浏览器
system——lib——libmedia_jni.so
三、
这样之后 你就可以用MediaMetadataRetriever类了
MediaMetadataRetriever主要有两个功能:MODE_GET_METADATA_ONLY和MODE_CAPTURE_FRAME_ONLY
mode为MODE_CAPTURE_FRAME_ONLY时
调用captureFrame取得一帧。
mode为MODE_GET_METADATA_ONLY时
extractMetadata 提取文件信息,ARTIST、DATE、YEAR、DURATION、RATING、FRAME_RATE、VIDEO_FORMAT 可以得到时长等信息
和extractAlbumArt 提取专辑信息,这个下面的音乐文件可以用到。
代码如下:
获得缩略图
private Bitmap createVideoThumbnail(String filePath) {
Bitmap bitmap = null;
android.media.MediaMetadataRetriever retriever = new android.media.MediaMetadataRetriever();
try {
retriever.setMode(android.media.MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY);
retriever.setDataSource(filePath);
bitmap = retriever.captureFrame();
} catch(IllegalArgumentException ex) {
// Assume this is a corrupt video file
} catch (RuntimeException ex) {
// Assume this is a corrupt video file.
} finally {
try {
retriever.release();
} catch (RuntimeException ex) {
// Ignore failures while cleaning up.
}
}
return bitmap;
}
获得时长
private String ttt(String filePath){
android.media.MediaMetadataRetriever retriever = new android.media.MediaMetadataRetriever();
retriever.setMode(android.media.MediaMetadataRetriever.MODE_GET_METADATA_ONLY);
retriever.setDataSource(filePath);
String str = retriever.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_DURATION);
System.out.println(str +" =====");
return str;
}
代码见附件
另外:
我同事有一个获得缩略图另辟蹊径的方法 大致思路如下
偷偷的将视频播放0.1秒 然后通过VideoView.getDrawingCache()方法 来获得缓存的图片 这个就可以为视频的缩略图 此方法可行!
- 大小: 10.9 KB
- 大小: 6.9 KB
- 大小: 36.5 KB
- 大小: 27.8 KB
- 大小: 106.1 KB
分享到:
相关推荐
今天,简单讲讲android里如何获取一个视频文件的第一帧作为缩略图显示在界面上。 之前,我说个最近需要从服务器下载视频文件,但是下载后肯定需要显示视频的缩略图在界面上给用户看,于是想到显示视频的第一帧作为...
import android.media.MediaMetadataRetriever; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.graphics.Bitmap; import android.graphi
MediaMetadataRetriever工作时序图 由于文件有点大,传到博客会被缩小,很难看
使用MediaMetadataRetriever获取视频信息及缩略图 使用支持FFmpeg和自带两种解码方式 使用线程异步加载缩略图并缓存 支持两种不同的加载顺序选择:顺序、乱序 获取不到缩略图时取最近的缩略图 引用说明 allprojects ...
Android获取视频首帧图片或第n秒的图片,供大家参考,具体内容如下 这里介绍如何获取视频首帧或者第n秒的图片并保存在本地,直接上代码: import android.graphics.Bitmap; import android.media....
公司最近要求给我负责的APP加上视频录制和发布的功能,我简单的完成了基本的录制和视频压缩功能,后来发现发布接口需要上传视频的截图,网上搜索了一下资料,在这里整理一下。 代码实现 /** * 获取视频文件截图 * *...
FFmpeg解码视频把指定时间的图像帧保存为jpg图片,并且可以执行FFmpeg命令。
The MediaMetadataRetrieverTest.java Android example source code
为了满足广大Android开发爱好者与从业者的学习需求,我们精心整理并上传了一份全面而实用的Android项目资源包。这份资源包内容丰富,涵盖了从基础知识到实战应用的全方位内容,旨在为开发者们提供一个便捷、高效的...
这句代码得到bitmap, 2、那么这句代码在MediaMetadataRetriever.java 中调用 getFrameAtTime(timeUs, OPTION_CLOSEST_SYNC)这句代码: 解释一下timeUs,和OPTION_CLOSEST_SYNC这2个变量的含义 timeUs The time ...
Android媒体文件metadata是如何实现跟解码器结合获取的 这是MediaMetadataRetriever 工作过程的时序图
经测试和研究发现在android中提取视频图片的方法只有MediaMetadataRetriever这个类比较靠谱简单实用。当然OpenGL-也可以做到哈!(后者不展开介绍), 最后会把完整的demo献上。 效果图 技术需求 需求一:给你一...
需求描述 比如广告播放,每个视频15秒,视频之间切换的时候,...1.获取视频流图片方式,通过MediaMetadataRetriever,测试发现,部分机器获取的Bitmap可能为空,无法解决,放弃 2.使用TextureView方式,可以获取当前
flv文件格式说明
从没有android.media.MediaMetadataRetriever的MP3和AAC文件中提取ID3v1和ID3v2信息 使用setNextMediaPlayer()减少连续轨道之间的延迟 将音频效果应用于音乐(均衡器和低音增强) 使用android.media.audiofx....
AndroidMediaMetaDataRetriever
FFmpegMediaMetadataRetriever提供统一的界面,用于从输入媒体文件中检索帧和元数据
FFmpegMediaMetadataRetriever是Android的MediaMetadataRetriever类的重新实现。 FFmpegMediaMetadataRetriever类提供了一个统一的接口,用于从输入媒体文件中检索帧和元数据,并使用FFmpeg作为其后端。 该项目使用...