let innerAudioContext = uni.createInnerAudioContext({
useWebAudioImplement: true
})
innerAudioContext.src = encodeURI(this.audio)
innerAudioContext.autoplay = true
innerAudioContext.volume = 0
innerAudioContext.startTime = 0
innerAudioContext.play();
const getDuration = () => {
setTimeout(() => {
if (innerAudioContext.duration === 0) {
getDuration();
} else {
this.duration = innerAudioContext.duration;
innerAudioContext.stop();
innerAudioContext.src = "";
innerAudioContext.autoplay = false;
innerAudioContext.destroy();
}
}, 100);
}
innerAudioContext.onPlay(getDuration);
为onPlay和onCanPlay都添加监听事件,在yes那一行就能正确获取duration值了,也不会影响播放效果。
function onCanPlay() { console.log("oncanplay: ", audioContext.duration); audioContext.play(); } function onPlay() { console.log("onplay: ", audioContext.duration); const duration = audioContext.duration; if (duration) { console.log("yes", audioContext.duration) totalTime.value = duration; } else { console.log("no", audioContext.duration) audioContext.stop(); audioContext.play(); } } audioContext.onCanplay(onCanPlay); audioContext.onPlay(onPlay);真离谱
找到问题了吗?是不是微信的bug?