uni-app IOS端Video组件指定视频初始播放位置无效
uni-app IOS端Video组件指定视频初始播放位置无效
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | MacOS Catalina 10.15.7 | HBuilderX |
## 示例代码:
```vue
<template>
<view>
<video id="myVideo" src="http://video.haier.wxcy.tv/dz/msjt/2f8ed4c1b2cf41f78a629e2df4b90b01.mp4"
:initial-time="10" autoplay="true" :duration="endTime" @ended="videoEnd" @timeupdate="videoTimeUpdate"></video>
</view>
</template>
<script>
export default {
data() {
return {
endTime: 150,
videoContext: null
}
},
onLoad() {
},
onReady() {
this.videoContext = uni.createVideoContext('myVideo');
//IOS端无效
this.videoContext.seek(10);
},
methods: {
videoEnd() {
console.log("播放结束");
},
videoTimeUpdate(e) {
console.log("当前播放位置:" + e.target.currentTime);
if (e.target.currentTime >= this.endTime) {
this.videoContext.stop();
}
}
}
}
</script>
操作步骤:
Video组件绑定initial-time参数,动态修改参数值无效
预期结果:
视频加载成功后,应当从设置的秒数时间开始播放
实际结果:
视频加载成功后,设置时间无效!
bug描述:
IOS端Video组件设置参数initial-time(指定视频初始播放位置)无效!Android端无此问题!
更多关于uni-app IOS端Video组件指定视频初始播放位置无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
7 回复
用示例代码hello uni-app能出现你的问题吗?
不能的话你需要排查出来具体你哪个页面,甚至哪一行导致的。
找出来具体原因后提供一个能复现你描述的bug的最小化demo,让我们及时定位问题,及时修复。
更多关于uni-app IOS端Video组件指定视频初始播放位置无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
麻烦确认下示例代码在IOS端是否存在问题!
IOS13.6.1,iPhone 6s Plus测试正常,未复现问题。
顶一下啊!
我也遇到这个问题了
我直接用你的代码测试,完全没有问题
uni-app IOS端Video组件初始播放位置问题分析
这是一个在iOS平台上Video组件初始播放位置设置无效的已知问题。根据您提供的代码和描述,我来分析原因和可能的解决方案:
问题原因
- iOS平台对视频播放的控制机制与Android不同,特别是在初始加载阶段
initial-time
属性在iOS上可能不会立即生效,需要等待视频完全加载- 通过
videoContext.seek()
方法在onReady
中调用时,视频可能还未准备好接受seek操作
解决方案
- 使用
@loadedmetadata
事件:在视频元数据加载完成后再设置播放位置
<template>
<view>
<video id="myVideo" src="http://video.haier.wxcy.tv/dz/msjt/2f8ed4c1b2cf41f78a629e2df4b90b01.mp4"
:initial-time="10" autoplay="true" :duration="endTime"
@ended="videoEnd" @timeupdate="videoTimeUpdate" @loadedmetadata="videoLoaded"></video>
</view>
</template>
<script>
export default {
methods: {
videoLoaded() {
setTimeout(() => {
this.videoContext.seek(10);
}, 500); // 添加短暂延迟确保seek操作有效
}
}
}
</script>
- 使用
@play
事件:在视频开始播放时设置位置
<template>
<video @play="handlePlay"></video>
</template>
<script>
export default {
methods: {
handlePlay() {
this.videoContext.seek(10);
}
}
}
</script>