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

Posted ywl5320

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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才是真的好,哈哈~

 

 

以上是关于Android获取(网络和本地)视频缩略图的主要内容,如果未能解决你的问题,请参考以下文章

Unity 获取视频缩略图

Unity 获取视频缩略图

Unity 获取视频缩略图

ios获取本地视频第一帧,缩略图

Android必知必会-获取视频文件的截图缩略图

Android:如何获取应用程序私有文件的视频缩略图?