uniapp 小程序 安卓苹果 短视频解决方案
需求
要做类似抖音小程序的功能
思路
uniapp 使用swiper滑块 实现滑动 使用video播放视频
遇到的问题
1 video组件在小程序可以使用 uni.createVideoContext api控制
2 但是在app端会有层级问题(因为使用的原生组件具体看官方文档)导致无法正常滑动或者样式错乱
3 滑动卡顿
在iosapp端设置封面图之后在开始播放时会闪一下再开始播放
解决方案
app端有两种方案
1 使用nvue 2 是使用html5播放器 3 uniappx
1 需要整包更新 3 不现实 最后选择了方案2
实现
1 app端使用一下方式进行渲染
<view v-html="item.videosHtml"></view>
2 使用renderjs对视频组件进行控制
<script module="videoMod" lang="renderjs"><script/>
3 使用@animationfinish滑动完成事件触发之后 执行播放解决 滑动卡顿
如果剩余视频不多 顺便可以加载一下下一页视频数据
<swiper @animationfinish="animationfinish" >
<swiper/>
4 在开始播放当前视频之前提前播放下一个视频10毫秒触发ios预加载解决ios设置封面后播放闪烁问题
let video = document.getElementById(`video_${this.currentSwiperIndex}`);if (!video) return; let nextVideo = document.getElementById(`video_${this.currentSwiperIndex+1}`); if (nextVideo) {nextVideo.play();setTimeout(function() {nextVideo.pause();video.play();}, 10);} else {video.play();}