uni-app this.audioContext.onCanplay中真机获取的duration是0

uni-app this.audioContext.onCanplay中真机获取的duration是0

项目信息 详情
产品分类 uniapp/小程序/微信
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 15.5
HBuilderX类型 正式
HBuilderX版本号 4.75
第三方开发者工具版本号 1.06.2504020
基础库版本号 3.9.2
项目创建方式 HBuilderX

操作步骤:

  • 上述bug描述

预期结果:

  • 上述bug描述

实际结果:

  • 上述bug描述

bug描述:

在音频文件中this.audioContext.duration真机获取时长是0,模拟器可以正常获取。


更多关于uni-app this.audioContext.onCanplay中真机获取的duration是0的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

测试一下原生微信小程序是否有这个问题

更多关于uni-app this.audioContext.onCanplay中真机获取的duration是0的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,音频组件在真机环境下onCanplay事件触发时获取duration为0是常见问题。这是因为真机环境音频加载比模拟器更复杂,onCanplay触发时音频元数据可能尚未完全解析。

建议改用onTimeUpdateonLoadedMetadata事件获取时长:

  1. 使用onTimeUpdate事件,该事件在音频时长信息就绪后触发更可靠
  2. 或监听onLoadedMetadata事件,该事件专门在元数据加载完成后触发

代码示例:

this.audioContext.onLoadedMetadata(() => {
  console.log('音频时长:', this.audioContext.duration) // 此时可获取正确时长
})

若仍获取不到,可添加延迟重试机制:

setTimeout(() => {
  console.log('延迟获取时长:', this.audioContext.duration)
}, 500)
回到顶部