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事件的触发频率,导致播放过程中事件不触发。

临时解决方案:

  1. 使用progress事件替代:虽然timeupdate不触发,但progress事件在Android端通常能正常触发
  2. 手动轮询:使用setInterval定时获取currentTime
    let timer = null
    this.videoContext = uni.createVideoContext('myVideo')
    
    // 播放时开始轮询
    onPlay() {
      timer = setInterval(() => {
        this.videoContext.seek(0) // 轻微seek触发timeupdate
      }, 1000) // 根据需求调整频率
    }
    
    // 暂停或结束时清除
    onPause() {
      clearInterval(timer)
    }
回到顶部