uni-app nvue下 video拉流 ios一直触发error且detail对象内没有值
uni-app nvue下 video拉流 ios一直触发error且detail对象内没有值
示例代码:
<video class="livePlayer" autoplay :src="url" :controls="false" [@error](/user/error)="error" id="myVideo" ref="myVideo" @click="page_click" style="flex: 1;" />
具体代码已在附件内
操作步骤:
获取后台地址返回的视频拉流之后 ios正常播放画面 有声音 会一直触发error 返回的event对象内detail是空对象 安卓无问题
预期结果:
视频拉流加载成功之后不会触发error
实际结果:
视频拉流加载成功之后一直触发error
bug描述:
nvue下 video拉流 ios一直触发@error 且detail对象内没有值
安卓@error无异常 第一次获取流会有概率问题失败 调用@error后重载无异常
详情见附件
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 64 | HBuilderX |
4.15 | ||
iOS | iOS 14 | |
更多关于uni-app nvue下 video拉流 ios一直触发error且detail对象内没有值的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app nvue下 video拉流 ios一直触发error且detail对象内没有值的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 的 nvue
页面中使用 video
组件进行拉流时,如果 iOS 设备一直触发 error
事件,并且 detail
对象内没有值,可能是由于以下原因导致的:
1. 视频格式或编码不支持
iOS 设备对视频格式和编码的支持有限,通常支持 H.264 编码的 MP4 格式。如果你尝试播放的视频流格式或编码不被 iOS 支持,可能会触发 error
事件。
解决方案:
- 确保视频流使用 H.264 编码。
- 如果是 RTMP 流,iOS 原生不支持 RTMP,可以考虑使用 HLS(HTTP Live Streaming)格式。HLS 是 iOS 原生支持的流媒体协议。
2. HLS 流格式问题
如果你使用的是 HLS 流,确保 .m3u8
文件和 .ts
文件能够正常访问,并且 .m3u8
文件的格式正确。
解决方案:
- 检查
.m3u8
文件是否能够正常访问。 - 确保
.m3u8
文件中的.ts
文件路径正确。
3. 跨域问题
如果视频流是从其他域名拉取的,可能会遇到跨域问题,导致视频无法播放。
解决方案:
- 确保服务器配置了正确的 CORS(跨域资源共享)策略,允许客户端访问视频流。
4. 网络问题
如果网络不稳定或视频流地址无法访问,可能会导致 error
事件触发。
解决方案:
- 检查网络连接是否正常。
- 确保视频流地址能够正常访问。
5. video
组件属性配置
确保 video
组件的属性配置正确,特别是 src
和 controls
等属性。
示例代码:
<template>
<view>
<video
id="myVideo"
src="https://example.com/stream.m3u8"
controls
@error="onVideoError"
></video>
</view>
</template>
<script>
export default {
methods: {
onVideoError(event) {
console.log('Video error:', event);
}
}
}
</script>
6. iOS 原生限制
iOS 对视频播放有一些原生限制,例如自动播放、静音播放等。确保你的视频播放行为符合 iOS 的原生限制。
解决方案:
- 如果需要在页面加载时自动播放视频,确保视频是静音的(
muted
属性)。 - 如果需要自动播放,可以考虑在用户交互事件(如点击事件)后触发视频播放。
7. 调试信息
如果 detail
对象内没有值,可以尝试使用 console.log
或 alert
输出更多调试信息,帮助定位问题。
示例代码:
onVideoError(event) {
console.log('Video error event:', event);
console.log('Error detail:', event.detail);
}