首先在没有播放音频之前,居然拿不到总时长
但是在播放之后也需要设置setTimeout来获取
所以在监听音频播放进度更新事件中获取。顺便获取当前播放进度
按照官方的写法
audioPlayed: function () { myAudio.play() setTieout(() => { myAudio.onTimeUpdate(() => { console.log(myAudio.duration) //总时长 console.log(myAudio.currentTime) //当前播放进度 }) }, 500) }
但是这两个console都没有触发,很是神奇
增加延迟的时间也没有用
打断点都没有进去
但是!
audioPlayed: function () { myAudio.play() setTieout(() => { myAudio.currentTime myAudio.onTimeUpdate(() => { console.log(myAudio.duration) //总时长 console.log(myAudio.currentTime) //当前播放进度 }) }, 500) }
在里面写了一个
myAudio.currentTime 或者 myAudio.duration
断点就进去了,console也出来了
由于过于神奇,所以记录一下
下面看下微信小程序音频长度获取的问题
小程序推荐使用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了。这个可以声明个个变量解决。
总结
以上所述是小编给大家介绍的微信小程序获取音频时长与实时获取播放进度问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。