获取本地的视频的缩略图: 官方提供了解决方法, ThumbanilUtils.createVideoThumbnail(String filePath ,int kind);返回一个bitmap; 可以建一个方法把方法放在放在你的方法库里方便调用 /* filePath=uri,也可以是文件路径 kind有两个常量值(MediaStore.Images.Thumbnails.MICRO_KIND大小为96x96的图 ,MediaStore.Images.Thumbnails.MINI_KIND 大小为512 * 384的图) */ public static Bitmap createVideoThumbnail(String filePath,int kind){ return ThumbanilUtils.createVideoThumbnail(String filePath ,int kind); }
获取网络视频的缩略图 分析MediaMetadataReriever类,发现有一个方法,setDataSource(String url,HashMap hashMap); 同样是放在自己的方法库里 public static Bitmap createVideoThumbnail2(String url) { Bitmap bitmap; //MediaMetadataRetriever 的接口,用于从输入的媒体文件中取得帧和元数据; MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try {//根据文件路径获取缩略图 retriever.setDataSource(url, new HashMap<String, String>());/*获得第一帧图片 方法的第一个参数的单位是微妙 第二个参数是 OPTION_CLOSEST 在给定的时间,检索最近一个帧,这个帧不一定是关键帧。 OPTION_CLOSEST_SYNC 在给定的时间,检索最近一个同步与数据源相关联的的帧(关键帧)。*/ bitmap = retriever.getFrameAtTime(10, MediaMetadataRetriever.OPTION_NEXT_SYNC); } catch (IllegalArgumentException e) { e.printStackTrace(); } finally { retriever.release(); } return bitmap; } /* 缺点(1.实际运用会非常卡,可以说是卡爆了,因为生成一个Bitmap耗时十分的严重,所以我们需要使用异步线程中去2.加载同一个视频的缩略图会加载多次3.缓存问题.综合以上因素所以需要我们自定义一个VideoThumbnailLoader)以后补充 */