小程序模板網(wǎng)

小程序wx.getRecorderManager()錄音管理

發(fā)布時(shí)間:2018-05-29 11:36 所屬欄目:小程序開發(fā)教程
小程序中提供了兩種錄音的API,wx.startRecord和wx.getRecorderManager(),前一個(gè)現(xiàn)在微信團(tuán)隊(duì)已經(jīng)不再維護(hù),所以在這里寫一下新的錄音管理,比之前要強(qiáng)大

1.小程序錄音管理介紹 wx.getRecorderManager()

基礎(chǔ)庫 1.6.0 開始支持,低版本需做兼容處理,獲取全局唯一的錄音管理器 recorderManager。

2.小程序錄音管理代碼

// 錄音管理
let record = function (recorderManager) {
  this.recorderManager = recorderManager
  this.recordStart()
}
record.prototype = {
  // 開始錄音
  start: function (startObj) {
    this.recorderManager.start(startObj)
  },
  //錄音開始事件
  recordStart: function () {
    this.recorderManager.onStart(() => {
      console.log(this.recorderManager, 'this.recorderManager')
    })
  }
}

3.Page onLoad配置

  //錄音管理,new 出 第二階段的實(shí)例
    recorderManager = wx.getRecorderManager()
    that.newRecord = new record(recorderManager)
     that.newRecord.recorderManager.onStop((res) => {
         console.log(res, '獲取錄制完的鏈接')
    })
    //播放錄音
    innerAudioContext = wx.createInnerAudioContext()
    innerAudioContext.onEnded(() => {
      console.log("音頻自然播放結(jié)束")
    })

4.現(xiàn)在開始錄音

    startRecord() {
        let that = this,
          startObj = {
            duration: 60000,
            sampleRate: 44100,
            numberOfChannels: 1,
            encodeBitRate: 192000,
            format: 'mp3',
            frameSize: 50
          }
        //錄音開始
        that.newRecord.start(startObj)
        // 錄音計(jì)時(shí)器
        recordTimeInterval = setInterval(function () {
        }, 1000)
  },

5.停止錄音

  stopRecord() {
    clearInterval(recordTimeInterval);
    //停止錄音事件
    this.newRecord.recorderManager.stop()
  }

6.播放錄音

          // 播放錄音
          playVoice(e) {
            let that = this
            let srcPath = e.currentTarget.dataset.temppath, // 點(diǎn)擊當(dāng)前傳遞的播放鏈接
                  duration = e.currentTarget.dataset.duration, // 錄音時(shí)間
                  index = e.currentTarget.dataset.index // 索引
            checkArr[index] = srcPath   //用于頁面判斷播放一個(gè),另一個(gè)暫停
            // 播放
            innerAudioContext.obeyMuteSwitch = false
            innerAudioContext.src = srcPath
            innerAudioContext.play()
            // 時(shí)間減少器
            playTimeInterval = setInterval(() => {
              let playTime = that.data.playTime += 1
            }, 1000)
          }

7.停止播放

        // 停止播放
          stopVoice(forIndex, e) {
            let index;
            e !== undefined ? index = e.currentTarget.dataset.index : index = forIndex
            clearInterval(playTimeInterval)
            checkArr[index] = undefined
            innerAudioContext.stop()
          }

8.只能播放一個(gè)的代碼

          // 只能播放一個(gè)
          onePlayFor(tempFilePath, src) {
            tempFilePath.forEach((el, i) => {
              if (el.tempFilePath !== src) {
                this.stopVoice(i)
              }
            })
          }

效果圖


本文地址:http://22321a.com/wxmini/doc/course/24478.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢