用系统方法ThumbnailUtils获取视频缩略图

  • Post author:
  • Post category:其他


在用Glide加载本地视频列表的视频封面的时候

Glide可以加载


本地



第一帧



作为图片

Glide.with(getContext())
                .load(Uri.fromFile(new File(videoBean.path)))
                .into(iv);
但是 发生了oom  

优化

   if (videoBean.path.endsWith(".mpg")) {
            Async.execute(() -> {
                final Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoBean.path, MediaStore.Images.Thumbnails.MINI_KIND);
                if (thumbnail != null) {
                    UI.post(() -> {
                        iv.setImageBitmap(thumbnail);
                        thumbnail.recycle();   //记得回收,别造成内存泄漏
                    });
                }
            });
        }

tips:mpg代表视频文件

MPEG是运动图像压缩算法的国际标准,现已被几乎所有的计算机平台支持。它包括MPEG-1,MPEG-2和MPEG-4。MPEG-1被广泛地应用在VCD(video compact disk)的制作,绝大多数的VCD采用MPEG-1格式压缩。MPEG-2应用在DVD(Digital Video/Versatile Disk)的制作方面、HDTV(高清晰电视广播)和一些高要求的视频编辑、处理方面。MPEG-4是一种新的压缩算法,使用这种算法的ASF格式可以把一部120 min长的电影压缩到300 M左右的视频流,可供在网上观

ThumbnailUtils获取缩略图,提供的三个静态方法:
1.createVideoThumbnail(String filePath, int kind):
filepath:视频文件路径;
kind表示类型,可以有两个选项,分别是Images.Thumbnails.MICRO_KIND(微型)和Images.Thumbnails.MINI_KIND(迷你型),前者的分辨率更低
其中,MINI_KIND: 512 x 384,MICRO_KIND: 96 x 96,当然也可以传入任意的int型数字,只是就不会对获取的bitmap进行相关的设置,
我们可以自己使用extractThumbnail( Bitmap source, int width, int height)方法对返回的bitmap进行相关设置。
2.extractThumbnail(Bitmap source, int width, int height, int options):用来创建一个指定大小的缩略图
直接对Bitmap进行缩略操作,最后一个参数定义为OPTIONS_RECYCLE_INPUT ,来回收资源
source表示图片源文件(Bitmap类型)
width表示指定压缩成后的宽度
height表示指定压缩成后的高度
3. extractThumbnail(Bitmap source, int width, int height) // 这个和上面的方法一样,无options选项



版权声明:本文为u010312474原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。