Android获取视频的第一帧缩略图(本地视频、网络视频)

Android获取视频的第一帧缩略图(本地视频、网络视频)

1、利用 MediaMetadataRetrieve类

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        //获取网络视频
//        retriever.setDataSource(url, new HashMap<String, String>());
        //获取本地视频
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
        String videoName = simpleDateFormat.format(new Date()) + ".jpg";
        retriever.setDataSource(url);
        Bitmap bitmap = retriever.getFrameAtTime();
        FileOutputStream outStream = null;
        try {
            outStream = new FileOutputStream(new File(context.getExternalCacheDir().getAbsolutePath()+ videoName + ".jpg"));
            bitmap.compress(Bitmap.CompressFormat.JPEG, 10, outStream);
            tempPicUrl = SessionManager.getInstance().getAppFileDirPath() + videoName + ".jpg";
            tempVideoUrl = url;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            outStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        retriever.release();

其中:url是图片的地址
tempPicUrl是自定义的缩略图本地地址

public Bitmap getFrameAtTime(long timeUs, int option)//无参数时默认去第一帧
第一个参数是传入时间,只能是us(微秒)
第二个参数:
OPTION_CLOSEST 在给定的时间,检索最近一个帧,这个帧不一定是关键帧。
OPTION_CLOSEST_SYNC 在给定的时间,检索最近一个同步与数据源相关联的的帧(关键帧)。
OPTION_NEXT_SYNC 在给定时间之后检索一个同步与数据源相关联的关键帧。
OPTION_PREVIOUS_SYNC 在给定时间之前检索一个同步与数据源相关联的关键帧。

注:MediaMetadataRetrieve操作视频比较耗时,建议在子线程中进行操作

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值