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
看你音频格式,支不支持
支持格式
格式 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。
解决方案:
- 使用
onLoadedMetadata事件替代:该事件在音频元数据加载完成后触发,此时duration通常已可用。innerAudioContext.onLoadedMetadata(() => { console.log('时长:', innerAudioContext.duration); });


