微信小程序音频长度获取的问题

时间:2024-03-09 15:59:21


小程序推荐使用wx.createInnerAudioContext()创建的innerAudioContext,我们也通过这个接口创建音频。
音频的长度可以通过属性获取:

但是,给innerAudioContext赋值src后就能获取吗,请看下面的例子:

onLoad: function () {
        bgM = wx.createInnerAudioContext();
        bgM.src = \'https://upyun.lesson.bbwansha.com/dub/user/2.mp3\';
        console.log(bgM.duration);//0
        bgM.onCanplay(()=>{
             console.log(bgM.duration)//0
        })
        bgM.play();
        bgM.onPlay(()=>{
             console.log(bgM.duration)//0
        })

        setTimeout(()=>{
            console.log(bgM.duration)//2.795102
        },1000)
},

  

赋值结束后不能获取能够理解,在onCanplay,onPlay没法获取有点难以理解。
还好,我们通过setTimeout可以获取到。
获取到之后,还有个问题,在开发工具里,音频播放完之后,duration不变。

偶尔出现的问题:但在真机上,duration变为0了,也就是第二遍播放的时候,获取不到duration了。这个可以声明个个变量解决:setTimeout这种方法里,获取到的长度赋值给一个全局变量。