小程序InnerAudioContext实例获取duration一直是0?
微信的小程序的开发 , 肯定时候总是会遇到一些奇怪的坑 , 让人无语 , 更让人无语的是微信社区的微信官方技术人员 , 在开发中遇到的很多问题基本状态就是发布完问题的同时,就结束了 , 很难等到社区官方的问题解决方案 , 最后问题只能被搁置不来了之 ; 很尴尬 , 辛爽吐槽~~
正题:
在开发音频相关业务时遇到 wx.createInnerAudioContext() 中 InnerAudioContext 实例 duration值 不能正常获取到值 , 更让人感到奇怪的是有的时候 , 明明有值 , 但是分别打印 InnerAudioContext 实例和InnerAudioContext .duration 前者可以正常看到值 , 但是后者却一直是 0 ; 更奇怪的是有的时候 InnerAudioContext 实例 duration值返回的是NaN ; 前前后后在社区留驻了几个小时 , 试了很多遇到此类问题的开发者的建议 , 尝试解决了 , duration无法正常获取到值的问题;
解决方法 :
需要调用两次方法获取 , 基本第二次就可以正常获取到值 ; 具体可以设置一个计时器 , 获取到值的时候我们再把计时器清除掉; 在InnerAudioContext .onCanplay()方法中进行操作获取;
/* 小程序特有相关 */
myaudio = wx.createInnerAudioContext();
myaudio.src = dataset.resource_path || dataset.path; //视频地址
myaudio.onCanplay(function getDuration() {
let intervalID = setInterval(function() {
if (myaudio.duration !== 0) {
console.log(myaudio.duration,'测试')
clearInterval(intervalID);
}
}, 500);
})
正常获取到值: