小程序wx.getRecorderManager()錄音管理
2020-09-27|HiShop
導讀:小程序 中提供了兩種錄音的API,wx.startRecord和wx.getRecorderManager()...
小程序中提供了兩種錄音的API,wx.startRecord和wx.getRecorderManager(),接下來為大家介紹后者。
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 出 第二階段的實例 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) // 錄音計時器 recordTimeInterval = setInterval(function () { }, 1000) },
5.停止錄音
stopRecord() { clearInterval(recordTimeInterval); //停止錄音事件 this.newRecord.recorderManager.stop() }
6.播放錄音
// 播放錄音 playVoice(e) { let that = this let srcPath = e.currentTarget.dataset.temppath, // 點擊當前傳遞的播放鏈接 duration = e.currentTarget.dataset.duration, // 錄音時間 index = e.currentTarget.dataset.index // 索引 checkArr[index] = srcPath //用于頁面判斷播放一個,另一個暫停 // 播放 innerAudioContext.obeyMuteSwitch = false innerAudioContext.src = srcPath innerAudioContext.play() // 時間減少器 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.只能播放一個的代碼
// 只能播放一個 onePlayFor(tempFilePath, src) { tempFilePath.forEach((el, i) => { if (el.tempFilePath !== src) { this.stopVoice(i) } }) }
錄音與停止錄音使用小程序bind:touchstart='startRecord' bind:touchend='stopRecord' 事件
您可能感興趣:小程序開發(fā)