uni-app subNvue设置自动跳转到某一秒时自动播放视频会卡顿

uni-app subNvue设置自动跳转到某一秒时自动播放视频会卡顿

项目信息 详情
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 10.15.7
HBuilderX类型 正式
HBuilderX版本号 3.2.12
手机系统 全部
手机厂商 华为
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

测试过的手机:

  • iphone11
  • 小米8

操作步骤:

在mounted里面 设置 videoCTX = this.$refs.video
setTimeout(() => { videoCTX.seek(9) videoCTX.play() },300)
第几秒的时候,视频疯狂的卡顿,每走一秒就会卡顿,当每次都是设置到 videoCTX.seek(0) 0秒的时候 视频是不卡顿的

预期结果:

在mounted里面 设置 videoCTX = this.$refs.video
setTimeout(() => { videoCTX.seek(9) videoCTX.play() },300)
第几秒的时候,视频正常的跳转到指定秒数,自动播放后视频不卡顿

实际结果:

在mounted里面 设置 videoCTX = this.$refs.video
setTimeout(() => { videoCTX.seek(9) videoCTX.play() },300)
第几秒的时候,视频疯狂的卡顿,每走一秒就会卡顿,当每次都是设置到 videoCTX.seek(0) 0秒的时候 视频是不卡顿的

bug描述:

在mounted里面 设置 videoCTX = this.$refs.video
setTimeout(() => { videoCTX.seek(9) videoCTX.play() },300)
第几秒的时候,视频疯狂的卡顿,每走一秒就会卡顿,当每次都是设置到 videoCTX.seek(0) 0秒的时候 视频是不卡顿的


更多关于uni-app subNvue设置自动跳转到某一秒时自动播放视频会卡顿的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app subNvue设置自动跳转到某一秒时自动播放视频会卡顿的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的视频播放时序问题。在 subNvue 中使用 seek() 后立即调用 play() 可能导致视频解码器状态异常,特别是在非零时间点。

核心原因是视频尚未加载完成时进行跳转会触发重新缓冲。虽然设置了300ms延迟,但视频可能仍未完成初始缓冲。

建议的解决方案:

  1. 监听视频准备就绪事件
// 在 video 组件上添加事件监听
<video ref="video" @loadedmetadata="onVideoReady"></video>

// 在 methods 中
onVideoReady() {
  setTimeout(() => {
    this.videoCTX.seek(9);
    this.videoCTX.play();
  }, 100);
}
  1. 使用 play 方法的回调
setTimeout(() => {
  this.videoCTX.seek(9);
  // 添加短暂延迟确保 seek 完成
  setTimeout(() => {
    this.videoCTX.play();
  }, 50);
}, 300);
回到顶部