评论

在微搭中如何实现录音功能

主要介绍在没有组件的情况下,如何实现录音功能

利用小程序 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);
  });


}

可以参考微搭最新实践文档:微搭应用实现录音功能

最后一次编辑于  07-29  
点赞 0
收藏
评论
登录 后发表内容