基础库 3.151.0 开始支持。
xhs.getRecorderManager() 返回的全局唯一录音管理器实例。
方法 | 说明 |
|---|---|
| start(options) | 开始录音。若当前已有录音进行中,会先停止上一次再开始 |
| pause() | 暂停录音 |
| resume() | 继续录音(从暂停处恢复) |
| stop() | 停止录音,触发 onStop 回调并返回 tempFilePath |
属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| duration | number | 60000 | 否 | 录音时长上限(单位:ms),最长 10 分钟,到达后自动停止 |
| sampleRate | number | 44100 | 否 | 采样率(Hz),推荐 44100 |
| numberOfChannels | number | 1 | 否 | 录音声道数,1 单声道 / 2 立体声 |
| encodeBitRate | number | 128000 | 否 | 编码码率(bps),推荐 128000 |
| format | string | 'aac' | 否 | 音频格式 |
| frameSize | number | — | 否 | 指定帧大小(KB)。设置后每达到该大小触发一次 onFrameRecorded,用于流式 ASR 等场景 |
format 合法值
值 | 说明 |
|---|---|
| aac | 推荐。压缩率高、质量好,移动端原生支持 |
| mp3 | 兼容性更广 |
方法 | 触发时机 | 回调参数 |
|---|---|---|
| onStart(callback) | 录音开始 | — |
| onPause(callback) | 录音暂停 | — |
| onResume(callback) | 录音继续 | — |
| onStop(callback) | 录音停止 | { tempFilePath: string, duration: number, fileSize: number } |
| onFrameRecorded(callback) | 达到 frameSize 时触发 | { frameBuffer: ArrayBuffer, isLastFrame: boolean } |
| onError(callback) | 录音出错 | { errMsg: string } |
| onInterruptionBegin(callback) | 系统中断录音开始(如来电) | — |
| onInterruptionEnd(callback) | 系统中断结束,可继续录音 | — |
const recorderManager = xhs.getRecorderManager()
// 监听事件
recorderManager.onStart(() => {
console.log('录音开始')
})
recorderManager.onStop((res) => {
console.log('录音结束', res.tempFilePath)
// 可将 tempFilePath 上传到云存储
})
recorderManager.onError((err) => {
console.error('录音错误', err.errMsg)
})
recorderManager.onInterruptionBegin(() => {
console.warn('录音被系统中断(如来电)')
})
recorderManager.onInterruptionEnd(() => {
console.log('系统中断结束')
})
// 开始录音(推荐参数)
recorderManager.start({
duration: 60000,
sampleRate: 44100,
numberOfChannels: 1,
encodeBitRate: 128000,
format: 'aac',
})
// 停止录音
recorderManager.stop()