uni-app ios video 组件添加 initial-time="20" 不显示内容一直loading
uni-app ios video 组件添加 initial-time=“20” 不显示内容一直loading
操作步骤:
- 按图中代码就能复现
预期结果:
- loading消失显示最新画面
实际结果:
- loading
bug描述:
- 使用hello uniapp模版 vue2 video组件页面
- rtsp测试地址: rtsp://rtsp-test-server.viomic.com:554/stream
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | m2 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.14 |
手机系统 | iOS |
手机系统版本号 | iOS 17 |
手机厂商 | 模拟器 |
手机机型 | 13 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
2 回复
我这边是设置了initial-time后,在苹果手机上播放视频,进度条直接不动了,而且是从0开始播放的
针对你提到的 uni-app
中 video
组件在 iOS 平台上设置 initial-time="20"
后不显示内容且一直显示 loading 的问题,这可能是由于视频组件的某些特性或 iOS 平台的特殊处理导致的。以下是一些可能的解决方案和代码示例,你可以尝试并根据实际情况进行调整。
解决方案一:使用 JavaScript 控制播放时间
由于直接在 video
标签中设置 initial-time
属性可能存在问题,你可以尝试在页面加载完成后,通过 JavaScript 来设置视频的当前时间。
<template>
<view>
<video
id="myVideo"
src="https://example.com/path/to/your/video.mp4"
controls
autoplay
@loadedmetadata="onVideoLoaded"
></video>
</view>
</template>
<script>
export default {
methods: {
onVideoLoaded(event) {
const video = this.$refs.myVideo || document.getElementById('myVideo');
if (video) {
video.currentTime = 20; // 设置初始播放时间为20秒
}
}
},
mounted() {
// 如果需要在mounted中直接操作DOM,可以使用$nextTick确保DOM已渲染
this.$nextTick(() => {
const video = this.$refs.myVideo || document.getElementById('myVideo');
if (video) {
video.addEventListener('loadedmetadata', this.onVideoLoaded);
}
});
},
beforeDestroy() {
const video = this.$refs.myVideo || document.getElementById('myVideo');
if (video) {
video.removeEventListener('loadedmetadata', this.onVideoLoaded);
}
}
};
</script>
注意:在 uni-app
中,你可能需要使用 this.$refs
或其他方式来获取视频元素,具体取决于你的项目结构和框架版本。
解决方案二:检查视频源和格式
确保你的视频源是有效的,并且格式是 iOS 设备支持的。有时候,视频编码或格式问题也可能导致加载失败。
解决方案三:更新 uni-app
和相关依赖
确保你的 uni-app
和所有相关依赖都是最新版本,因为新版本可能修复了旧版本中的一些已知问题。
结论
如果上述方法都不能解决问题,建议查看 uni-app
的官方文档或社区论坛,看看是否有其他开发者遇到并解决了类似的问题。同时,也可以考虑向 uni-app
的开发者团队报告这个 bug。