Android获取(网络和本地)视频缩略图
在音视频APP开发过程中,有一个比较重要的功能就是显示视频封面图片(如果不能显示视频封面用户体验是比较差的),常用的方法有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() {@Overridepublic 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才是真的好,哈哈~
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
