uni-app 在官方demo基础上添加 VideoPlayer 模块后加载时崩溃

uni-app 在官方demo基础上添加 VideoPlayer 模块后加载时崩溃

操作步骤:

操作步骤:打开app,选择预加载小程序3,进入小程序,往下拉一点 选择《好点推荐》,点击:精品男装(100元/个)图片为鹰,进入页面直接崩溃
在底部详情,加载视频时候崩溃,提示崩溃栈信息

预期结果:

程序运行不会崩溃

实际结果:

程序运行,会崩溃,但是运行过之后,直接点开手机,程序又正常,且可以正常加载视频播放

bug描述:

iPhone7 Plus
系统版本: iOS15 Beta3
XCode版本:Version 13.0 beta 3 (13A5192i)
操作步骤:打开app,选择预加载小程序3,进入小程序,往下拉一点 选择《好点推荐》,点击:精品男装(100元/个)图片为鹰,进入页面直接崩溃
在底部详情,加载视频时候崩溃,提示崩溃栈信息
链接: https://pan.baidu.com/s/1UtqRRbicelnEzUy2w1c6-Q 提取码: sgcn


更多关于uni-app 在官方demo基础上添加 VideoPlayer 模块后加载时崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 在官方demo基础上添加 VideoPlayer 模块后加载时崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据崩溃描述,这是一个典型的iOS视频组件初始化时序问题。从崩溃栈信息分析(虽然未直接提供),常见原因是VideoPlayer组件在页面初始化阶段与iOS渲染机制冲突。

关键问题点:

  1. iOS15 Beta3系统对视频解码器的预加载机制有变更
  2. 首次加载时视频组件可能尝试在页面生命周期未完全就绪时初始化
  3. 内存分配时机不当导致访问了未初始化的渲染上下文

解决方案:

  1. 延迟视频初始化时机:在onReady或setTimeout中创建VideoPlayer实例
  2. 添加组件就绪检查:在video-player标签上使用v-if=“isVideoReady”,在mounted后设置标志位
  3. 预加载策略调整:将视频源地址从data中移至组件创建时动态设置
  4. 错误捕获:封装videoContext.play()方法,添加try-catch块处理首次播放异常

代码调整示例:

export default {
  data() {
    return {
      isVideoReady: false
    }
  },
  mounted() {
    setTimeout(() => {
      this.isVideoReady = true
    }, 100)
  }
}
回到顶部