# qq.getRecorderManager

QQ mac版本:支持

QQ windows版本:支持

# RecorderManager qq.getRecorderManager()

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

# 返回值

# RecorderManager

# RecorderManager

全局唯一的录音管理器

QQ mac版本:支持

QQ windows版本:支持

# 方法

# RecorderManager.start(Object object)

开始录音

# RecorderManager.pause()

暂停录音

# RecorderManager.resume()

继续录音

# RecorderManager.stop()

停止录音

# RecorderManager.onStart(function callback)

监听录音开始事件

# RecorderManager.onResume(function callback)

监听录音继续事件

# RecorderManager.onPause(function callback)

监听录音暂停事件

# RecorderManager.onStop(function callback)

监听录音结束事件

# RecorderManager.onFrameRecorded(function callback)

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

# RecorderManager.onError(function callback)

监听录音错误事件

# RecorderManager.onInterruptionBegin(function callback)

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

# RecorderManager.onInterruptionEnd(function callback)

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

# 示例代码

const recorderManager = qq.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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# .onError

# RecorderManager.onError(function callback)

监听录音错误事件

# 参数

# function callback

录音错误事件的回调函数

# 参数

Object res

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

# .onFrameRecorded

# RecorderManager.onFrameRecorded(function callback)

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

# 参数

# function callback

已录制完指定帧大小的文件事件的回调函数

# 参数

Object res

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

# .onInterruptionBegin

# RecorderManager.onInterruptionBegin(function callback)

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

# 参数

# function callback

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

# .onInterruptionEnd

# RecorderManager.onInterruptionEnd(function callback)

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

# 参数

# function callback

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

# .onPause

# RecorderManager.onPause(function callback)

监听录音暂停事件

# 参数

# function callback

录音暂停事件的回调函数

# .onResume

# RecorderManager.onResume(function callback)

监听录音继续事件

# 参数

# function callback

录音继续事件的回调函数

# .onStart

# RecorderManager.onStart(function callback)

监听录音开始事件

# 参数

# function callback

录音开始事件的回调函数

# .onStop

# RecorderManager.onStop(function callback)

监听录音结束事件

# 参数

# function callback

录音结束事件的回调函数

# 参数

Object res

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

# .pause

# RecorderManager.pause()

暂停录音

# .resume

# RecorderManager.resume()

继续录音

# .start

# 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 否 指定录音的音频输入源,可通过 qq.getAvailableAudioSources() 获取当前可用的音频源

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 格式

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

# .stop

# RecorderManager.stop()

停止录音