Android获取(网络和本地)视频缩略图

 

在音视频APP开发过程中,有一个比较重要的功能就是显示视频封面图片(如果不能显示视频封面用户体验是比较差的),常用的方法有2中:

  1. 提前准备好视频的封面图片,然后显示时去加载这张图片
  2. 从视频中动态解析出视频封面图片

第一种方式对于APP端而言没什么难度,拿到图片地址直接加载显示图片就行。第二种方式就比较难了,因为处理视频获取图片还是比较复杂的。不过今天要给大家讲的方式比较简单,因为已经有第三方库帮我们做好:wlmedia

我们先来看一下效果:(分别获取网络、本地、逐帧图片、列表图片)

网络视频图片获取
本地视频图片获取
逐帧获取图片
视频直播列表图片获取

现在开始实现以上功能

1、gradle中集成库(当然权限这种自己要开启)

implementation 'ywl.ywl5320:wlmedia:version'

2、使用到的API(只有几行、几行、行……)

WlMediaUtil wlMediaUtil = new WlMediaUtil();//创建实例
wlMediaUtil.setSource("http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8");//设置数据源
wlMediaUtil.init();//初始化 返回0表示成功
wlMediaUtil.openCodec();//打开视频图片解码器 返回0表示成功
/**
    开始获取图片
    time:表示获取指定时间的图片
    false:表示获取当前第一帧图片 true:表示获取当前第一帧关键帧图片
    返回值:不为空即获取到图片
*/ 
wlMediaUtil.getVideoImg(time, false);
wlMediaUtil.release();//最后回收资源

以上就是用到的所有API,是不是比较简单,几句代码就完事~

3、调用方式(需要在子线程中调用,因为获取视频图片是耗时操作!!)

new Thread(new Runnable() {
    @Override
    public void run() {
        WlMediaUtil wlMediaUtil = new WlMediaUtil();
        wlMediaUtil.setSource("http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8");
        int ret = wlMediaUtil.init();
        if(ret == 0)
        {
            ret = wlMediaUtil.openCodec();
            if(ret == 0)
            {
                WlVideoImgBean wlVideoImgBean = wlMediaUtil.getVideoImg(false);
                if(wlVideoImgBean != null)
                {
                    Message message = Message.obtain();
                    message.obj = wlVideoImgBean;
                    message.what = 0;
                    handler.sendMessage(message);
                }
            }
        }
        wlMediaUtil.release();
    }
}).start();

这样就实现了视频图片的获取。

Demo下载地址:GitHub:GetVideoPIc

最后总结一下:功能越复杂,使用越简单的SDk才是真的好,哈哈~

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ywl5320

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值