获取视频和图片缩略图 与媒体信息
2014-02-12 15:36
106 查看
原文地址:http://blog.csdn.net/liu149339750/article/details/7884140?reload
从android 2.2也就是API 8开始,新增了一个类:
android.media.ThumbnailUtils这个类提供了3个静态方法一个用来获取视频第一帧得到的Bitmap,2个对图片进行缩略处理。
第一个参数是视频文件的路径,第二个参数是指定图片的大小,有两种选择Thumbnails.MINI_KIND与Thumbnails.MICRO_KIND第一种文档上说大小是512
x 384 ,我用一个MP4格式文件测试得到544 x 960,用一个wmv格式文件测试得到160 x 120。明显不靠谱。第二种参数两种格式文件得到的大小都是 96 x 96,这个才是缩略图。extractThumbnail(Bitmap source,
int width, int height, int options)extractThumbnail(Bitmap source,
int width, int height)
这两种方法都是用来处理Bitmap的大小的,第一个参数是要处理的Bitmap,第二个参数是处理后宽度,第三个是高度,第四个我也不知道。也就是说可以用第三种方法把截取到的视频第一帧的Bitmap转成任意想要的大小,第三个方法还可以获取内存卡内图片的缩略图。
获取第一帧Bitmap代码
得到的大小是210 X 210。
获取内存卡上图片的缩略图
得到的大小是100 x 100.
从API
10开始新增一类MediaMetadataRetriever可以用来获取媒体文件的信息
可以获取视频文件的第一帧与媒体文件的部分定义了的头信息。
MediaMetadataRetriever可以获取视频任何一帧的缩略图。
附上一段4.2图库里用反射获取视频第一帧的代码,很明显,针对所有版本
从android 2.2也就是API 8开始,新增了一个类:
android.media.ThumbnailUtils这个类提供了3个静态方法一个用来获取视频第一帧得到的Bitmap,2个对图片进行缩略处理。
public static Bitmap createVideoThumbnail (String filePath,
int kind)
第一个参数是视频文件的路径,第二个参数是指定图片的大小,有两种选择Thumbnails.MINI_KIND与Thumbnails.MICRO_KIND第一种文档上说大小是512x 384 ,我用一个MP4格式文件测试得到544 x 960,用一个wmv格式文件测试得到160 x 120。明显不靠谱。第二种参数两种格式文件得到的大小都是 96 x 96,这个才是缩略图。extractThumbnail(Bitmap source,
int width, int height, int options)extractThumbnail(Bitmap source,
int width, int height)
这两种方法都是用来处理Bitmap的大小的,第一个参数是要处理的Bitmap,第二个参数是处理后宽度,第三个是高度,第四个我也不知道。也就是说可以用第三种方法把截取到的视频第一帧的Bitmap转成任意想要的大小,第三个方法还可以获取内存卡内图片的缩略图。
获取第一帧Bitmap代码
Bitmap pic=BitmapFactory.decodeFile("/sdcard/a.jpg"); pic = ThumbnailUtils.extractThumbnail(pic, 100, 100);
得到的大小是210 X 210。
获取内存卡上图片的缩略图
Bitmap pic=BitmapFactory.decodeFile("/sdcard/a.jpg"); pic = ThumbnailUtils.extractThumbnail(pic, 100, 100);
得到的大小是100 x 100.
从API
10开始新增一类MediaMetadataRetriever可以用来获取媒体文件的信息
MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource("/sdcard/33.mp4"); Bitmap bitmap = mmr.getFrameAtTime(); image.setImageBitmap(bitmap); System.out.println(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)+""); System.out.println(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE)+""); mmr.release();
可以获取视频文件的第一帧与媒体文件的部分定义了的头信息。
MediaMetadataRetriever可以获取视频任何一帧的缩略图。
附上一段4.2图库里用反射获取视频第一帧的代码,很明显,针对所有版本
public static Bitmap createVideoThumbnail(String filePath) { // MediaMetadataRetriever is available on API Level 8 // but is hidden until API Level 10 Class<?> clazz = null; Object instance = null; try { clazz = Class.forName("android.media.MediaMetadataRetriever"); instance = clazz.newInstance(); Method method = clazz.getMethod("setDataSource", String.class); method.invoke(instance, filePath); // The method name changes between API Level 9 and 10. if (Build.VERSION.SDK_INT <= 9) { return (Bitmap) clazz.getMethod("captureFrame").invoke(instance); } else { byte[] data = (byte[]) clazz.getMethod("getEmbeddedPicture").invoke(instance); if (data != null) { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); if (bitmap != null) return bitmap; } return (Bitmap) clazz.getMethod("getFrameAtTime").invoke(instance); } } catch (IllegalArgumentException ex) { // Assume this is a corrupt video file } catch (RuntimeException ex) { // Assume this is a corrupt video file. } catch (InstantiationException e) { Log.e(TAG, "createVideoThumbnail", e); } catch (InvocationTargetException e) { Log.e(TAG, "createVideoThumbnail", e); } catch (ClassNotFoundException e) { Log.e(TAG, "createVideoThumbnail", e); } catch (NoSuchMethodException e) { Log.e(TAG, "createVideoThumbnail", e); } catch (IllegalAccessException e) { Log.e(TAG, "createVideoThumbnail", e); } finally { try { if (instance != null) { clazz.getMethod("release").invoke(instance); } } catch (Exception ignored) { } } return null; }
相关文章推荐
- 获取视频和图片缩略图 与媒体信息
- 获取视频和图片缩略图 与媒体信息
- 获取视频和图片缩略图 与媒体信息
- Android系统详解之获取图片和视频的缩略图
- 根据路径获取视频、图片的缩略图
- Java获取视频的相关信息,并获取指定时间的视频图片
- Android 获取SDCard上图片和视频的缩略图
- 如何获取youtobe中的视频的缩略图等相关信息(调用API返回)?
- 获取Android手机上的图片和视频缩略图
- Android系统详解之获取图片和视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- 获取Android手机的图片和视频的缩略图[转]
- Android studio 获取sd卡的图片和视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- Android获取SD卡上图片和视频文件及其缩略图
- Android获取SD卡上图片和视频的缩略图
- MediaMetadataRetrieverCompat - 获取视频信息与缩略图兼容方案
- 安卓图片处理全解:获取视频的缩略图
- 获取图片和视频缩略图Thumbnails ThumbnailUtils
- android 使用ThumbnailUtils类获取图片、视频的缩略图