uni-app 【报Bug】uni.createInnerAudioContext 安卓端小程序 onCanPlay中获取不到时长duration,开发工具端可以获得

uni-app 【报Bug】uni.createInnerAudioContext 安卓端小程序 onCanPlay中获取不到时长duration,开发工具端可以获得

开发环境 版本号 项目创建方式
Windows 10 HBuilderX
产品分类:uniapp/小程序/微信

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:10

HBuilderX类型:正式

HBuilderX版本号:3.3.0

第三方开发者工具版本号:最新

基础库版本号:最新

项目创建方式:HBuilderX

### 示例代码:
```javascript
var innerAudioContext = uni.createInnerAudioContext();  
innerAudioContext.src = this.src;  
innerAudioContext.onCanplay(()=>{  
innerAudioContext.duration;  
console.log(innerAudioContext.duration);  
setTimeout(() => {  
    this.durationTime = innerAudioContext.duration*1000;  
    console.log('onCanplay:音频时长加载完毕=',this.durationTime);  
        }, 1000);         
})

操作步骤:

var innerAudioContext = uni.createInnerAudioContext();  
innerAudioContext.src = this.src;  
innerAudioContext.onCanplay(()=>{  
innerAudioContext.duration;  
console.log(innerAudioContext.duration);  
setTimeout(() => {  
    this.durationTime = innerAudioContext.duration*1000;  
    console.log('onCanplay:音频时长加载完毕=',this.durationTime);  
        }, 1000);         
})

预期结果:

日志中输出正确数值

实际结果:

安卓真机上 打印出来为0
微信最新开发工具上正常显示数值

bug描述:

安卓真机上 打印出来为0
微信最新开发工具上正常显示数值


更多关于uni-app 【报Bug】uni.createInnerAudioContext 安卓端小程序 onCanPlay中获取不到时长duration,开发工具端可以获得的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

看你音频格式,支不支持 支持格式
格式 iOS Android flac x √ m4a √ √ ogg x √ ape x √ amr x √ wma x √ wav √ √ mp3 √ √ mp4 x √ aac √ √ aiff √ x caf √ x

更多关于uni-app 【报Bug】uni.createInnerAudioContext 安卓端小程序 onCanPlay中获取不到时长duration,开发工具端可以获得的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我的音频格式是MP3,但还是获取不到。把文件下载到本地来可以获取到,走接口接回来就又拿不到了。请问下这是啥原因

出现了这个问题。。。咋解决啊

出现了这个问题。。。咋解决啊
到底能不能拿到,最后咋解决的?

这是一个已知的跨平台兼容性问题。uni.createInnerAudioContext 在小程序端的实现依赖于微信原生API,而安卓平台下,onCanplay 事件触发时音频元数据(如时长)可能尚未完全加载,导致 duration 属性为0。

解决方案:

  1. 使用 onLoadedMetadata 事件替代:该事件在音频元数据加载完成后触发,此时 duration 通常已可用。
    innerAudioContext.onLoadedMetadata(() => {
      console.log('时长:', innerAudioContext.duration);
    });
回到顶部