微信小程序播放音頻

最近在寫一個仿網易雲的音樂播放器小程序,第一個難關就是音樂播放;

<!-- 底部進度條 -->
  <view class="footer">

    <view class="progress-bar">
      <view>00:00</view>
      <view class="progress-line">
        <view class="progress-bg"></view>
        <view class="progress-red"></view>
        <view class="progress-dot">
          <icon class="iconfont iconyuandian1"></icon>
        </view>
      </view>
      <view>00:00</view>
      <audio src="{{songurl}}" id="myAudio"></audio>
    </view>

  </view>

 控制音樂的播放暫停play事件

   play:function(){
    this.setData({
      playstatus: !this.data.playstatus
    })
    if(this.data.playstatus == true){
      wx.pauseBackgroundAudio();
    }else{
      wx.playBackgroundAudio({
        dataUrl: this.data.songData.songurl,
        title: this.data.songData.name
      })
    }
  },

(目前頁面是這樣子的,不過進度條和歌詞 還沒開始做,有點不太美觀 )

此時看着是沒有問題的,播放暫停完全正常,但我接着後續的時候發現提示<audio/>組件已不再維護,爲防止後續再出現未知錯誤,換了getBackgroundAudioManager;

 BackgroundAudioManager官方文檔

因爲每次暫停再播放,音樂就會從頭開始播放,所以我在暫停時獲取當前音樂播放進度(暫停時間),然後再播放的時候從暫停時間處開始播放,但是!!!測試的時候bug不斷,首先是暫停有延遲,點擊暫停按鈕幾秒後音樂才暫停,其次是再播放的位置跟暫停的位置有時能保持一致,有時會重複播放幾秒。

現在我打算再換wx.createInnerAudioContext 接口 ,還沒開始改,不過我相信我可以的,再不行......

我就再換!

改好了繼續更

-----------------分界線

我又回來了。

InnerAudioContext官方文檔 

InnerAudioContext跟BackgroundAudioManager有點類似 但是比它簡單點,

InnerAudioContext.pause()

暫停方法。暫停後的音頻再播放會從暫停處開始播放,這點就不像BackgroundAudioManager那麼雞肋了。

最終播放頁面(播放、暫停、上一曲、下一曲、拖動進度條已實現,可能之後還有細節需要調整)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章