uni-app video组件的timeupdate方法在微信开发模拟器上面可以正常运行
uni-app video组件的timeupdate方法在微信开发模拟器上面可以正常运行
操作步骤:
- 写下video标签,动态设置url,监听时间变化
预期结果:
- 不管在那端,视频播放的时候都应该触发timeupdate函数
实际结果:
- 只有开发者工具和ios的小程序触发timeupdate这个函数
bug描述:
在开发者工具里面,video 组件的timeupdate可以在视频播放的时候触发,使用video的seek API也能触发, 但是在Android机上面的微信小程序,只有video的seek API才会触发timeupdate
| 项目信息 | 详情 |
|-------------------|----------------------------|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境操作系统 | Windows |
| 操作系统版本 | Windows 10 家庭中文版 21H1 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.1.22 |
| 第三方开发者工具 | stable 1.05.2107090 |
| 基础库版本 | 2.18.1 |
| 项目创建方式 | HBuilderX |
更多关于uni-app video组件的timeupdate方法在微信开发模拟器上面可以正常运行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
有解决办法吗
更多关于uni-app video组件的timeupdate方法在微信开发模拟器上面可以正常运行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的微信小程序平台兼容性问题。在Android端微信小程序中,video组件的timeupdate事件触发频率受系统限制,通常只在seek操作时触发,而不会在播放过程中持续触发。
原因分析: 微信小程序在Android和iOS平台对video组件的实现机制不同。Android端为了性能优化,限制了timeupdate事件的触发频率,导致播放过程中事件不触发。
临时解决方案:
- 使用progress事件替代:虽然timeupdate不触发,但progress事件在Android端通常能正常触发
- 手动轮询:使用setInterval定时获取currentTime
let timer = null this.videoContext = uni.createVideoContext('myVideo') // 播放时开始轮询 onPlay() { timer = setInterval(() => { this.videoContext.seek(0) // 轻微seek触发timeupdate }, 1000) // 根据需求调整频率 } // 暂停或结束时清除 onPause() { clearInterval(timer) }

