uni-app video组件中的timeupdate方法在ios手机上不执行(直播拉流视频)

uni-app video组件中的timeupdate方法在ios手机上不执行(直播拉流视频)

开发环境 版本号 项目创建方式
Windows WIN10 HBuilderX

在nvue页面使用video组件 (视频为直播拉流视频)

<video :src="videoList.srcList" @play="play" @timeupdate="timeupdate" controls></video>

在methods方法里面使用timeupdate方法

timeupdate(event){
console.log(event)
}

更多关于uni-app video组件中的timeupdate方法在ios手机上不执行(直播拉流视频)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

请提供一个直播的链接

更多关于uni-app video组件中的timeupdate方法在ios手机上不执行(直播拉流视频)的实战教程也可以访问 https://www.itying.com/category-93-b0.html


给你私信啦

问题已修复,请更新HX

最新版本没修复,能回调,但是duration和当前进度一直是0

回复 5***@qq.com: 问题不一样 你的问题 请附上可以稳定复现的demo 重开一个帖子

在iOS设备上,video组件的timeupdate事件不触发,通常与直播流(如HLS协议)的特性有关。iOS的video组件基于系统原生播放器,对于直播流,播放器可能不会频繁触发时间更新事件,因为直播流没有固定的时长,系统可能不会像处理点播视频那样定期触发该事件。

可能原因及解决方案:

  1. 直播流协议限制:iOS原生播放器对HLS直播流的timeupdate支持较弱。可尝试使用[@progress](/user/progress)事件替代,该事件在缓冲进度变化时触发,但注意其触发频率也有限。

    <video :src="videoList.srcList" [@progress](/user/progress)="progress" controls></video>
    
  2. 使用created生命周期监听:在created中通过uni.createVideoContext获取视频上下文,并监听时间更新(但同样可能受iOS限制)。

    created() {
      this.videoContext = uni.createVideoContext('myVideo', this);
      this.videoContext.onTimeUpdate((res) => {
        console.log(res);
      });
    }
    
  3. 轮询当前时间:若需实时获取播放时间,可通过setInterval结合videoContext.seek()videoContext.currentTime获取,但频繁操作可能影响性能。

    setInterval(() => {
      const currentTime = this.videoContext.currentTime;
      console.log(currentTime);
    }, 1000);
回到顶部