問題環境
全域性生成了一個innerAudioContext例項,每次賦值src然後play()
問題描述
有時候音訊播放無聲音
解決思路
排錯
註冊監聽方法,檢視哪裡出錯
innerAudioContext.onCanplay(() => {
console.log('can play')
})
innerAudioContext.onPlay(() => {
console.log('play')
})
innerAudioContext.src = http://xxxxx
// await wepy.downloadFile({ url: innerAudioContext.src })
console.log(innerAudioContext.src)
innerAudioContext.play()
複製程式碼
下面是log結果,0、1、2的時候完全沒有聲音;3的時候經過不完全測試前兩次是好的,後面就會沒有聲音
// type 0
http://xxxxx
// type 1
http://xxxxx
play
// type 2
http://xxxxx
can play
// type 3
http://xxxxx
play
can play
複製程式碼
解決辦法
看上面的log,不播放聲音的情況是比較複雜的。我的判斷是同一個例項導致的問題,經過驗證還是會有bug(驗證方法就是每次進來new例項,然後新增onEnded監聽,在onEnded的時候呼叫destroy());同事的第一反應是載入問題,於是我試了一下,的確能夠解決。
innerAudioContext.src = http://xxxxx
await wepy.downloadFile({ url: innerAudioContext.src })
innerAudioContext.play()
複製程式碼