- qq.getRecorderManager
- RecorderManager
- 方法
- 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)
- RecorderManager.onError(function callback)
- RecorderManager.onInterruptionBegin(function callback)
- RecorderManager.onInterruptionEnd(function callback)
- 示例代码
- 方法
- .onError
- .onFrameRecorded
- .onInterruptionBegin
- .onInterruptionEnd
- .onPause
- .onResume
- .onStart
- .onStop
- .pause
- .resume
- .start
- .stop
qq.getRecorderManager
RecorderManager qq.getRecorderManager()
获取全局唯一的录音管理器 RecorderManager
返回值
RecorderManager
RecorderManager
全局唯一的录音管理器
方法
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)
.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()
停止录音