小程序
小游戏
企业微信
微信支付
扫描小程序码分享
- 需求的场景描述(希望解决的问题)
微信小程序video标签及相关api中没有找到有提供视频预加载,及其预加载进度的api,请问现在视频支持预加载吗?或者有什么方案解决这个问题吗?
- 希望提供的能力
支持预加载并返回进度,100%后给予回调方法。
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
只要设置了 src 后就会开始加载,可以通过这个方式来实现下一个视频的预加载
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
动态替换掉SRC之后 还是会有1-3秒的loading时间 这个是正常的吗
可是试试页面创建两个video标签,来实现预加载的效果
使用两个video通过z-index,显示隐藏的方式,能解决切换两个视频出现黑屏的问题
<image :class="{ 'virtual-image': true, 'virtual-image-lower': virtualPersonPosition === 1, 'virtual-player-show': !isShow && posterSrc, 'virtual-player-hidden': isShow }" v-is="isShow" :src="posterSrc" mode="aspectFill" /> <video id="bizui" :class="{ 'virtual-player': true, 'virtual-player-lower': virtualPersonPosition === 1, 'virtual-player-show': isShow && videoStatus === 'bizui', 'virtual-player-hidden': !isShow || videoStatus !== 'bizui' }" :show-center-play-btn="false" :enable-play-gesture="false" :controls="false" object-fit="cover" :poster="xxx" src="xx.mp4" :loop="true" :enable-progress-gesture="false" :autoplay="true" :direction="direction" :muted="true" @play="onPlay" /> <video :class="{ 'virtual-player': true, 'virtual-player-lower': virtualPersonPosition === 1, 'virtual-player-show': isShow && videoStatus === 'zhangzui', 'virtual-player-hidden': !isShow || videoStatus !== 'zhangzui' }" id="zhangzui" :show-center-play-btn="false" :enable-play-gesture="false" :controls="false" :object-fit="'cover'" :poster="posterSrc" src="xx" :loop="true" :enable-progress-gesture="false" :autoplay="true" :direction="direction" :muted="true" @play="onPlay" /> onPlay() { // // 视频可以播放的时候,显示视频,黑屏问题 if (!this.isShow) { this.playTimer = setTimeout(() => { this.isShow = true; }, 300); } } public changeVideoStatus(status = 'bizui') { if (this.videoStatus === status) return; this.videoStatus = status; }
微信内 video 标签不会触发 canplay 事件,点击播放之后才触发
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
只要设置了 src 后就会开始加载,可以通过这个方式来实现下一个视频的预加载
动态替换掉SRC之后 还是会有1-3秒的loading时间 这个是正常的吗
可是试试页面创建两个video标签,来实现预加载的效果
使用两个video通过z-index,显示隐藏的方式,能解决切换两个视频出现黑屏的问题
<image :class="{ 'virtual-image': true, 'virtual-image-lower': virtualPersonPosition === 1, 'virtual-player-show': !isShow && posterSrc, 'virtual-player-hidden': isShow }" v-is="isShow" :src="posterSrc" mode="aspectFill" /> <video id="bizui" :class="{ 'virtual-player': true, 'virtual-player-lower': virtualPersonPosition === 1, 'virtual-player-show': isShow && videoStatus === 'bizui', 'virtual-player-hidden': !isShow || videoStatus !== 'bizui' }" :show-center-play-btn="false" :enable-play-gesture="false" :controls="false" object-fit="cover" :poster="xxx" src="xx.mp4" :loop="true" :enable-progress-gesture="false" :autoplay="true" :direction="direction" :muted="true" @play="onPlay" /> <video :class="{ 'virtual-player': true, 'virtual-player-lower': virtualPersonPosition === 1, 'virtual-player-show': isShow && videoStatus === 'zhangzui', 'virtual-player-hidden': !isShow || videoStatus !== 'zhangzui' }" id="zhangzui" :show-center-play-btn="false" :enable-play-gesture="false" :controls="false" :object-fit="'cover'" :poster="posterSrc" src="xx" :loop="true" :enable-progress-gesture="false" :autoplay="true" :direction="direction" :muted="true" @play="onPlay" /> onPlay() { // // 视频可以播放的时候,显示视频,黑屏问题 if (!this.isShow) { this.playTimer = setTimeout(() => { this.isShow = true; }, 300); } } public changeVideoStatus(status = 'bizui') { if (this.videoStatus === status) return; this.videoStatus = status; }
微信内 video 标签不会触发 canplay 事件,点击播放之后才触发