小程式[InnerAudioContext]不報錯、 不播放BUG要如何解決?

kirian發表於2019-04-28

問題環境

全域性生成了一個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()
複製程式碼

相關文章