uni.getRecorderManager()

获取全局唯一的录音管理器 recorderManager

平台差异说明

5+AppH5微信小程序支付宝小程序百度小程序头条小程序
xx

recorderManager 对象的方法列表

方法参数说明平台差异说明
startoptions开始录音
pause暂停录音
resume继续录音
stop停止录音
onStartcallback录音开始事件
onPausecallback录音暂停事件
onStopcallback录音停止事件,会回调文件地址
onFrameRecordedcallback已录制完指定帧大小的文件,会回调录音分片结果数据。如果设置了 frameSize ,则会回调此事件5+App 暂不支持
onErrorcallback录音错误事件, 会回调错误信息

start(options) 说明

属性类型必填说明
durationNumber指定录音的时长,单位 ms ,如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音,最大值 600000(10 分钟),默认值 60000(1 分钟)
sampleRateNumber采样率,有效值 8000/16000/44100
numberOfChannelsNumber录音通道数,有效值 1/2
encodeBitRateNumber编码码率,有效值见下表格
formatString音频格式,有效值 aac/mp3
frameSizeString指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。

其中,采样率和码率有一定要求,具体有效值如下:

采样率编码码率
800016000 ~ 48000
1102516000 ~ 48000
1200024000 ~ 64000
1600024000 ~ 96000
2205032000 ~ 128000
2400032000 ~ 128000
3200048000 ~ 192000
4410064000 ~ 320000
4800064000 ~ 320000

onStop(callback) 回调结果说明

属性类型说明
tempFilePathString录音文件的临时路径

onFrameRecorded(callback) 回调结果说明

属性类型说明
frameBufferArrayBuffer录音分片结果数据
isLastFrameBoolean当前帧是否正常录音结束前的最后一帧

onError(callback) 回调结果说明

属性类型说明
errMsgString错误信息

示例

  1. <template>
  2. <view>
  3. <button @tap="startRecord">开始录音</button>
  4. <button @tap="endRecord">停止录音</button>
  5. <button @tap="playVoice">播放录音</button>
  6. </view>
  7. </template>
  1. const recorderManager = uni.getRecorderManager();
  2. const innerAudioContext = uni.createInnerAudioContext();
  3. innerAudioContext.autoplay = true;
  4. export default {
  5. data: {
  6. text: 'uni-app',
  7. voicePath: ''
  8. },
  9. onLoad() {
  10. let self = this;
  11. recorderManager.onStop(function (res) {
  12. console.log('recorder stop' + JSON.stringify(res));
  13. self.voicePath = res.tempFilePath;
  14. });
  15. },
  16. methods: {
  17. startRecord() {
  18. console.log('开始录音');
  19. recorderManager.start();
  20. },
  21. endRecord() {
  22. console.log('录音结束');
  23. recorderManager.stop();
  24. },
  25. playVoice() {
  26. console.log('播放录音');
  27. if (this.voicePath) {
  28. innerAudioContext.src = this.voicePath;
  29. innerAudioContext.play();
  30. }
  31. }
  32. }
  33. }

发现错误?想参与编辑?在 GitHub 上编辑此页面!