关于增加小视频(类抖音,快手,微视)模块的总结

简介

项目需要在app内添加很火的小视频,比如抖音,微视,快手等吸引用户,提高留存,做的效果也是跟上面的精品一样,可以上下切换小视频,可以点赞,关注,小红心特效等等

遇到的问题

1.上下滑动控件遇到的坑
2.上下切换使用的框架调研
3.切换小视频无法秒播,延迟高,体验差
4.ijk无法实现真正预加载,尝试了多种方案

实现的方式

1.上下滑动控件遇到的坑
最开始使用了阿里自定义控件,但是具有严重的适配问题,强烈建议不要使用,已经有好几年不维护了,我这里推荐使用VerticalViewPager,查看源码对比ViewPager可以发现是在ViewPager的源码上做了改动,经测试适配性很好

2.上下切换使用的框架调研
网上有很多例子,使用RecycleView+Fragment实现上下切换进行播放,但是这个方案感觉还不太成熟,真正在你使用该方案实现的过程中会有很多人,并且抖音也没有使用该方案,精品使用的是ViewPager+fragment,所以使用了ViewPager+fragment

3.切换小视频无法秒播,延迟高,体验差
小视频播放必须要做到秒播,要不在体验上就会很差,切换一个视频,卡一秒或者好几秒这个无法接受的,所以必须要做到秒播,要实现秒播,最优的方案就是预加载,这里的预加载不是指对同一个视频边对播放边下载,类似于缓冲条,这里的预加载是指预加载另外一个视频。其实只要注意观察,抖音,快手,微视等app,在他们播放一个视频的时候,从手机顶部的网速可以看到,下载流量瞬间到达几M每秒,这其实就是预加载下一个短视频,加载完了,做暂停处理而已。等到用户滑动到当前视频的时候,直接进行播放,避免网络请求的延迟等各种问题,从而实现秒播。

4.ijk无法实现真正预加载,尝试了多种方案
这里说一下我的解决方案:
最开始尝试的方案是
第一种方案:使用ijk进行播放,通过各种个样的参数调优,比如减少网络探测时间等等
能设置的参数都设置了,但是无法做到秒播,ijk无法做到预加载另外一个视频,即ijk无法同时播放两个不同的视频,在开发时间不允许的情况下直接放弃该方案(好想有个时间去改一下C源码,呜呜)

第二方案:
使用七牛的播放sdk,该方案跟ijk效果一样,没有太多的改变,无法实现秒播,也无法预加载另外一个视频(备注这个接触不多,也有可能是误判)

第三方案:
使用了阿里播放sdk,并且使用视频预加载,短视频本身也存放在阿里云上面,并且阿里播放sdk也支持了预加载的功能,所以最终使用了该方案

总结

你可能感兴趣的:(技术难点,项目总结,android,开发,闲谈)