ios获取本地视频第一帧,缩略图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios获取本地视频第一帧,缩略图相关的知识,希望对你有一定的参考价值。
参考技术A 更多详解:喜欢可以加Q群号:913934649,点赞,评论;
: https://www.jianshu.com/u/88db5f15770d
csdn: https://me.csdn.net/beyondforme
掘金: https://juejin.im/user/5e09a9e86fb9a016271294a7
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()
@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才是真的好,哈哈~
以上是关于ios获取本地视频第一帧,缩略图的主要内容,如果未能解决你的问题,请参考以下文章