根据视频地址获取视频的第一帧画面做为封面 IllegalArgumentException

关于这一类的文章网上也是很多的,只是在复制黏贴别人代码的时候竟然直接崩溃了……这就很蛋疼了!

public Bitmap getBitmapFormUrl(String url) {
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    retriever.setDataSource(url);
    //getFrameAtTime()--->在setDataSource()之后调用此方法。 如果可能,该方法在任何时间位置找到代表性的帧,
    // 并将其作为位图返回。这对于生成输入数据源的缩略图很有用。
    Bitmap bitmap = retriever.getFrameAtTime();
    retriever.release();
    return bitmap;
}

就这么几行代码还是给我抛了个IllegalArgumentException异常,最后查看文档发现在api14以后又增加了个参数。传了个空的HashMap进去就获取到了第一帧的画面….

这里写图片描述

最后整理的代码就长下面这个样子了

public static Bitmap getBitmapFormUrl(String url) {
    Bitmap bitmap = null;
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    try {
        if (Build.VERSION.SDK_INT >= 14) {
            retriever.setDataSource(url, new HashMap<String, String>());
        } else {
            retriever.setDataSource(url);
        }
        /*getFrameAtTime()--->在setDataSource()之后调用此方法。 如果可能,该方法在任何时间位置找到代表性的帧,
         并将其作为位图返回。这对于生成输入数据源的缩略图很有用。**/
        bitmap = retriever.getFrameAtTime();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } finally {
        try {
            retriever.release();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }
    }
    return bitmap;
}

谨以此篇博客记录这个坑!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值