您好,登錄后才能下訂單哦!
小編給大家分享一下微信小程序怎么獲取音頻時長與實時獲取播放進度問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
首先在沒有播放音頻之前,居然拿不到總時長
但是在播放之后也需要設置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了。這個可以聲明個個變量解決。
看完了這篇文章,相信你對“微信小程序怎么獲取音頻時長與實時獲取播放進度問題”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。