showRecord
录音功能,支持开始录音、停止录音和播放录音,支持小程序、H5、App端。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.getRecorderManager | () => UniNamespace.RecorderManager | 获取录音管理器 |
deps.createInnerAudioContext | () => UniNamespace.InnerAudioContext | 创建音频上下文 |
deps.detectEnvironment | () => 'h5' | 'miniapp' | 'app' | 'unknown' | 检测环境函数(可选) |
deps.checkMediaDevices | () => boolean | 检测是否支持录音(H5端可选) |
deps.log | Console['log'] | 日志输出 |
deps.error | Console['error'] | 错误输出 |
环境要求
- UniApp环境: 使用UniApp API,支持小程序、H5、App端
- H5端: 需要浏览器支持 MediaDevices API
函数签名
typescript
function showRecord(
options?: RecordOptions,
deps: ShowRecordDeps
): Promise<RecordResult>
function stopRecord(deps: ShowRecordDeps): void
function playRecord(
filePath: string,
deps: ShowRecordDeps
): Promise<void>
interface ShowRecordDeps {
getRecorderManager: () => UniNamespace.RecorderManager
createInnerAudioContext: () => UniNamespace.InnerAudioContext
detectEnvironment?: () => 'h5' | 'miniapp' | 'app' | 'unknown'
checkMediaDevices?: () => boolean
log: Console['log']
error: Console['error']
}
interface RecordOptions {
duration?: number
sampleRate?: number
numberOfChannels?: number
encodeBitRate?: number
format?: 'mp3' | 'aac' | 'wav'
frameSize?: number
extraData?: Record<string, unknown>
}
interface RecordResult {
errMsg?: string
tempFilePath?: string
duration?: number
fileSize?: number
raw?: unknown
}参数
showRecord
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
options | RecordOptions | 否 | {} | 录音选项 |
options.duration | number | 否 | - | 录音时长(毫秒) |
options.sampleRate | number | 否 | - | 采样率 |
options.format | 'mp3' | 'aac' | 'wav' | 否 | - | 录音格式 |
deps | ShowRecordDeps | 是 | - | 依赖注入对象 |
stopRecord
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
deps | ShowRecordDeps | 是 | 依赖注入对象 |
playRecord
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
filePath | string | 是 | 音频文件路径 |
deps | ShowRecordDeps | 是 | 依赖注入对象 |
返回值
| 函数 | 类型 | 说明 |
|---|---|---|
showRecord | Promise<RecordResult> | Promise,成功时返回录音结果,包含临时文件路径、时长、大小 |
stopRecord | void | 无返回值 |
playRecord | Promise<void> | Promise,播放完成时 resolve |
工作原理
- 环境检测:根据
detectEnvironment函数检测当前运行环境 - 平台适配:
- 小程序端:使用
uni.getRecorderManager和uni.createInnerAudioContext - H5端:使用 Web Audio API
- App端:使用
uni.getRecorderManager和uni.createInnerAudioContext
- 小程序端:使用
- 录音管理:通过录音管理器控制录音的开始和停止
- 音频播放:通过音频上下文播放录音文件
支持多平台统一接口,自动适配不同环境的实现差异。