微信小程序API 录音·录音管理器

2022-05-11 16:33 更新

RecorderManager

全局唯一的录音管理器


方法:

RecorderManager.onError(function callback)

监听录音错误事件

参数

function callback

录音错误事件的回调函数

参数

Object res
属性 类型 说明
errMsg string 错误信息


RecorderManager.onFrameRecorded(function callback)

监听已录制完指定帧大小的文件事件。如果设置了 frameSize,则会回调此事件。

参数

function callback

已录制完指定帧大小的文件事件的兼容处理

参数

Object res
属性 类型 说明
frameBuffer ArrayBuffer 录音分片数据
isLastFrame boolean 当前帧是否正常录音结束前的最后一帧


RecorderManager.onInterruptionBegin(function callback)

基础库 2.3.0 开始支持,低版本需做兼容处理

监听录音因为受到系统占用而被中断开始事件。以下场景会触发此事件:微信语音聊天、微信视频聊天。此事件触发后,录音会被暂停。pause 事件在此事件后触发

参数

function callback

录音因为受到系统占用而被中断开始事件的回调函数


RecorderManager.onInterruptionEnd(function callback)

基础库 2.3.0 开始支持,低版本需做兼容处理

监听录音中断结束事件。在收到 interruptionBegin 事件之后,小程序内所有录音会暂停,收到此事件之后才可再次录音成功。

参数

function callback

录音中断结束事件的回调函数


RecorderManager.onPause(function callback)

监听录音暂停事件

参数

function callback

录音暂停事件的回调函数


RecorderManager.onResume(function callback)

监听录音继续事件

参数

function callback

录音继续事件的回调函数


RecorderManager.onStart(function callback)

监听录音开始事件

参数

function callback

录音开始事件的回调函数


RecorderManager.onStop(function callback)

监听录音结束事件

参数

function callback

录音结束事件的回调函数

参数

Object res
属性 类型 说明
tempFilePath string 录音文件的临时路径 (本地路径)
duration number 录音总时长,单位:ms
fileSize number 录音文件大小,单位:Byte


RecorderManager.pause()

暂停录音


RecorderManager.resume()

继续录音


RecorderManager.start(Object object)

开始录音

参数

Object object

属性 类型 默认值 必填 说明 最低版本
duration number 60000 录音的时长,单位 ms,最大值 600000(10 分钟)
sampleRate number 8000 采样率
numberOfChannels number 2 录音通道数
encodeBitRate number 48000 编码码率,有效值见下表格
format string aac 音频格式
frameSize number 指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。
audioSource string auto 指定录音的音频输入源,可通过 wx.getAvailableAudioSources() 获取当前可用的音频源 2.1.0

object.sampleRate 的合法值

说明 最低版本
8000 8000 采样率
11025 11025 采样率
12000 12000 采样率
16000 16000 采样率
22050 22050 采样率
24000 24000 采样率
32000 32000 采样率
44100 44100 采样率
48000 48000 采样率

object.numberOfChannels 的合法值

说明 最低版本
1 1 个通道
2 2 个通道

object.format 的合法值

说明 最低版本
mp3 mp3 格式
aac aac 格式
wav wav 格式
PCM pcm 格式

object.audioSource 的合法值

说明 最低版本
auto 自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用
buildInMic 手机麦克风,仅限 iOS
headsetMic 耳机麦克风,仅限 iOS
mic 麦克风(没插耳麦时是手机麦克风,插耳麦时是耳机麦克风),仅限 Android
camcorder 同 mic,适用于录制音视频内容,仅限 Android
voice_communication 同 mic,适用于实时沟通,仅限 Android
voice_recognition 同 mic,适用于语音识别,仅限 Android

采样率与编码码率限制

每种采样率有对应的编码码率范围有效值,设置不合法的采样率或编码码率会导致录音失败,具体对应关系如下表。

采样率 编码码率
8000 16000 ~ 48000
11025 16000 ~ 48000
12000 24000 ~ 64000
16000 24000 ~ 96000
22050 32000 ~ 128000
24000 32000 ~ 128000
32000 48000 ~ 192000
44100 64000 ~ 320000
48000 64000 ~ 320000


RecorderManager.stop()

停止录音



示例代码

const recorderManager = wx.getRecorderManager()

recorderManager.onStart(() => {
  console.log('recorder start')
})
recorderManager.onPause(() => {
  console.log('recorder pause')
})
recorderManager.onStop((res) => {
  console.log('recorder stop', res)
  const { tempFilePath } = res
})
recorderManager.onFrameRecorded((res) => {
  const { frameBuffer } = res
  console.log('frameBuffer.byteLength', frameBuffer.byteLength)
})

const options = {
  duration: 10000,
  sampleRate: 44100,
  numberOfChannels: 1,
  encodeBitRate: 192000,
  format: 'aac',
  frameSize: 50
}

recorderManager.start(options)


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号