uni-app小程序 video组件设置initial-time跳转到指定时间节点后,会出现长时间的缓存现象

uni-app小程序 video组件设置initial-time跳转到指定时间节点后,会出现长时间的缓存现象

开发环境 版本号 项目创建方式
Windows HBuilderX
HBuilderX 4.08
第三方开发者工具 3.0.0-3090920231225001
基础库 3.4.1

操作步骤:

小程序 video组件设置initial-time跳转到指定时间节点后,会出现长时间的缓存现象,缓冲期间没有任何网速下载,等缓冲完成后,又一切正常播放。

预期结果:

不出现长时间的缓冲

实际结果:

会出现长时间的缓冲

bug描述:

小程序 video组件设置initial-time跳转到指定时间节点后,会出现长时间的缓存现象,缓冲期间没有任何网速下载,等缓冲完成后,又一切正常播放。视频大小大约800m的mp4格式视频


更多关于uni-app小程序 video组件设置initial-time跳转到指定时间节点后,会出现长时间的缓存现象的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app小程序 video组件设置initial-time跳转到指定时间节点后,会出现长时间的缓存现象的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 uni-app 开发小程序时,如果你使用 video 组件的 initial-time 属性来跳转到指定时间节点,可能会遇到视频长时间缓存的现象。这个问题通常与视频的缓存机制和播放器的实现有关。

以下是一些可能的解决方案和优化建议:

1. 使用 seek 方法

initial-time 属性只在视频初始化时生效。如果你需要在视频播放过程中跳转到指定时间节点,可以使用 video 组件的 seek 方法。

<template>
  <view>
    <video id="myVideo" src="your-video-url" controls></video>
    <button @click="seekToTime">跳转到指定时间</button>
  </view>
</template>

<script>
export default {
  methods: {
    seekToTime() {
      const videoContext = uni.createVideoContext('myVideo');
      videoContext.seek(60); // 跳转到第60秒
    }
  }
}
</script>

2. 清除缓存

如果视频缓存导致播放不流畅,可以尝试清除缓存。你可以通过以下方式清除缓存:

  • 重启小程序:关闭并重新打开小程序,可能会清除部分缓存。
  • 使用不同的视频 URL:每次播放时使用不同的视频 URL,避免缓存问题。

3. 使用 autoplaycontrols 属性

确保 video 组件的 autoplaycontrols 属性设置为 true,以便用户可以手动控制视频播放。

<video id="myVideo" src="your-video-url" autoplay controls></video>

4. 优化视频格式和编码

确保视频文件的格式和编码方式适合在小程序中播放。通常,MP4 格式的 H.264 编码视频在小程序中表现较好。

5. 使用 timeupdate 事件

通过监听 timeupdate 事件,可以实时获取视频的当前播放时间,并做出相应的处理。

<template>
  <view>
    <video id="myVideo" src="your-video-url" @timeupdate="onTimeUpdate" controls></video>
  </view>
</template>

<script>
export default {
  methods: {
    onTimeUpdate(e) {
      console.log('当前播放时间:', e.detail.currentTime);
    }
  }
}
</script>

6. 检查小程序版本

确保你使用的小程序基础库版本是最新的,因为官方可能会在后续版本中修复一些已知问题。

7. 使用 wx.createVideoContextstop 方法

在跳转时间节点之前,可以先调用 stop 方法停止视频播放,然后再跳转。

const videoContext = uni.createVideoContext('myVideo');
videoContext.stop();
videoContext.seek(60); // 跳转到第60秒

8. 使用 wx.downloadFile 下载视频

如果你对视频的缓存问题非常敏感,可以尝试使用 wx.downloadFile 先将视频下载到本地,然后再使用 video 组件播放本地视频文件。

uni.downloadFile({
  url: 'your-video-url',
  success: function (res) {
    const videoPath = res.tempFilePath;
    const videoContext = uni.createVideoContext('myVideo');
    videoContext.src = videoPath;
    videoContext.play();
  }
});
回到顶部