小程序中提供了兩種錄音的API,wx.startRecord和wx.getRecorderManager(),前一個(gè)現(xiàn)在微信團(tuán)隊(duì)已經(jīng)不再維護(hù),所以在這里寫一下新的錄音管理,比之前要強(qiáng)大
基礎(chǔ)庫 1.6.0 開始支持,低版本需做兼容處理,獲取全局唯一的錄音管理器 recorderManager。
// 錄音管理 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') }) } }
//錄音管理,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é)束") })
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) },
stopRecord() { clearInterval(recordTimeInterval); //停止錄音事件 this.newRecord.recorderManager.stop() }
// 播放錄音 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) }
// 停止播放 stopVoice(forIndex, e) { let index; e !== undefined ? index = e.currentTarget.dataset.index : index = forIndex clearInterval(playTimeInterval) checkArr[index] = undefined innerAudioContext.stop() }
// 只能播放一個(gè) onePlayFor(tempFilePath, src) { tempFilePath.forEach((el, i) => { if (el.tempFilePath !== src) { this.stopVoice(i) } }) }
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)