利用小程序 API 中的 RecorderManager 对象(全局唯一的录音管理器)以及相关的录音事件来实现整个录音流程。
核心代码:
//获取录音器
export default function ({ event, data }) {
$w.page.dataset.state.recorderManager_object = wx.getRecorderManager(); //录音器实例对象
}
//执行动作与监听
export default function ({ event, data }) {
let action = data.target
const options = {
duration: 60000, // 录音时长,单位:毫秒
sampleRate: 16000, // 采样率,单位:Hz
numberOfChannels: 1, // 声道数
encodeBitRate: 48000, // 编码位速,单位:bps
format: 'mp3', // 音频格式,支持 'mp3'、'aac'、'wav'
frameSize: 50, // 指定帧大小,单位:ms
}
//录音事件
switch (action) {
case "start": //开始
$w.page.dataset.state.recorderManager_object.start(options)
break
case "pause": //暂停
$w.page.dataset.state.recorderManager_object.pause()
break
case "resume": //继续
$w.page.dataset.state.recorderManager_object.resume()
break
case "stop": //停止
$w.page.dataset.state.recorderManager_object.stop()
break
default:
}
//监听录音事件
$w.page.dataset.state.recorderManager_object.onStart(() => { //监听开始录音
console.log('recorder start')
})
$w.page.dataset.state.recorderManager_object.onPause(() => { //监听暂停录音
console.log('recorder pause')
})
$w.page.dataset.state.recorderManager_object.onStop((res) => { //监听结束录音
console.log('recorder stop', res)
const { tempFilePath } = res //返回录音临时文件
$w.page.dataset.state.wxFilePath = tempFilePath //将临时文件路径存储到变量wxFilePath
console.log("wx-tempfile:" + $w.page.dataset.state.wxFilePath)
})
$w.page.dataset.state.recorderManager_object.onError((err) => {
console.error('recorder error', err);
});
}
可以参考微搭最新实践文档:微搭应用实现录音功能