更新记录

1.0.0(2026-04-18)

-支持 Android / iOS 原生录音 -支持录音权限申请 -支持开始、暂停、恢复、停止 -支持自定义分片时长 -支持保留原始分片并输出合并文件 -支持返回录音文件路径,便于业务侧播放、上传和转写


平台兼容性

uni-app(4.75)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × × × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.75)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × × ×

austin-recorder

简介

austin-recorder 是一个UTS后台录音引擎插件,支持录音权限申请、开始 / 暂停 / 恢复 / 停止、分片落盘、状态回调、会话管理和录音文件输出。

当前插件下的是通用模板页演示:

  • 录音权限申请
  • 开始 / 暂停 / 恢复 / 停止录音
  • 自定义分片时长
  • 分片文件输出
  • 会话列表查询
  • 合并文件路径输出

功能特性

  • 支持 Android / iOS 原生录音
  • 支持自定义时间自动切片
  • 支持暂停和恢复
  • 支持录音状态回调
  • 支持实时分贝回调
  • 支持分片文件回调
  • 支持分片合并输出文件回调
  • 支持查询当前会话和历史会话
  • 支持删除会话及其文件
  • 默认输出 m4a(AAC) 文件,在 Android / iOS 原生录音场景中更稳定,且文件体积通常更小
  • 原始分片保留不删,停止后额外生成 merged.m4a

manifest.json 权限配置

根项目 manifest.json 需要补齐以下权限。

Android

app-plus.distribute.android.permissions 中添加:

{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
          "<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\"/>",
          "<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_MICROPHONE\"/>",
          "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>"
        ]
      }
    }
  }
}

字段说明:

  • RECORD_AUDIO:录音必需权限
  • FOREGROUND_SERVICE:前台服务权限
  • FOREGROUND_SERVICE_MICROPHONE:前台录音服务权限
  • WAKE_LOCK:保持录音过程中的运行稳定性

iOS

app-plus.distribute.ios.privacyDescription 中添加:

{
  "app-plus": {
    "distribute": {
      "ios": {
        "privacyDescription": {
          "NSMicrophoneUsageDescription": "用于后台录音、业务留痕和语音采集"
        }
      }
    }
  }
}

说明:

  • NSMicrophoneUsageDescription 是 iOS 麦克风权限弹窗文案,未配置时应用无法正常通过权限申请
  • 文案建议按你的真实业务场景改写,不要直接写成和插件无关的用途

字段描述

StartRecorderOptions

字段名 类型 默认值 说明
scene string background-record 业务场景标识
sessionId string 自动生成 自定义会话 id
outputDir string 插件默认目录 自定义输出目录
segmentDurationMs number 300000 分片时长,单位毫秒
maxDurationMs number 3600000 最大录音时长,单位毫秒
enableMetering boolean true 是否开启分贝回调
notificationTitle string Android 前台通知标题预留字段
notificationText string Android 前台通知文案预留字段
onStateChange function 状态变化回调
onMetering function 分贝变化回调
onSegmentReady function 分片生成回调
success function 开始录音成功回调
fail function 开始录音失败回调
complete function 开始录音结束回调

RecorderPermissionResult

字段名 类型 说明
ok boolean 本次权限请求是否成功
platform string 当前平台
action string 当前动作名
errCode number 错误码,成功时通常为 0
errMsg string 错误信息
note string 补充说明
granted boolean 是否已授权
canAskAgain boolean 是否还能再次请求权限
permissions Array<string> 已申请权限列表
deniedPermissions Array<string> 被拒绝的权限列表

RecorderStateEvent

字段名 类型 说明
sessionId string 当前会话 id
scene string 当前场景标识
status string 当前状态,常见值:idle / recording / paused / stopped / error
durationMs number 当前累计时长
segmentCount number 当前已生成分片数量
reason string 状态变化原因
time number 状态回调时间戳

RecorderMeteringEvent

字段名 类型 说明
sessionId string 当前会话 id
durationMs number 当前累计时长
db number 当前分贝值
peak number 当前峰值
time number 分贝回调时间戳

RecorderSegmentInfo

字段名 类型 说明
sessionId string 所属会话 id
index number 第几个分片
filePath string 分片文件路径
durationMs number 当前分片时长
sizeBytes number 当前分片文件大小
createdAt number 分片创建时间

RecorderSessionInfo

字段名 类型 说明
sessionId string 会话 id
scene string 业务场景标识
status string 当前会话状态
outputDir string 当前会话输出目录
startedAt number 开始时间
endedAt number 结束时间
totalDurationMs number 会话总时长
segmentCount number 分片数量
mergedFilePath string 合并文件路径
mergedSizeBytes number 合并文件大小
mergeNote string 合并结果说明
platform string 当前平台

RecorderStatus

字段名 类型 说明
supported boolean 当前平台是否支持
platform string 当前平台
status string 当前引擎状态
sessionId string 当前会话 id
scene string 当前场景标识
durationMs number 当前累计时长
segmentCount number 当前已生成分片数量
meterDb number 当前分贝值
note string 状态说明

RecorderFail

字段名 类型 说明
errSubject string 错误主题
errCode number 错误码
errMsg string 错误信息
platform string 当前平台
action string 出错动作
note string 补充说明

使用示例

1. 申请录音权限

import { requestRecorderPermission } from '@/uni_modules/austin-recorder'

requestRecorderPermission({
  success(res) {
    console.log('permission-success', res)
  },
  fail(err) {
    console.log('permission-fail', err)
  },
})

2. 开始后台录音

import { startRecorder } from '@/uni_modules/austin-recorder'

startRecorder({
  scene: 'background-record',
  segmentDurationMs: 10000,
  maxDurationMs: 60 * 60 * 1000,
  enableMetering: true,
  onStateChange(event) {
    console.log('state', event)
  },
  onMetering(event) {
    console.log('meter', event)
  },
  onSegmentReady(segment) {
    console.log('segment-file', segment.filePath)
    console.log('segment', segment)
  },
  success(session) {
    console.log('session-start', session)
  },
  fail(err) {
    console.log('start-fail', err)
  },
})

3. 停止录音并获取合并文件

import { stopRecorder } from '@/uni_modules/austin-recorder'

stopRecorder({
  reason: 'manual-stop',
  success(session) {
    console.log('merged-file', session.mergedFilePath)
    console.log('session-stop', session)
  },
  fail(err) {
    console.log('stop-fail', err)
  },
})

4. 查询当前状态和会话

import {
  getRecorderStatusSync,
  getCurrentSessionSync,
  listRecorderSessionsSync,
  listRecorderSegmentsSync,
} from '@/uni_modules/austin-recorder'

const status = getRecorderStatusSync()
const currentSession = getCurrentSessionSync()
const sessions = listRecorderSessionsSync()
const segments = currentSession ? listRecorderSegmentsSync(currentSession.sessionId) : []

console.log('status', status)
console.log('currentSession', currentSession)
console.log('sessions', sessions)
console.log('segments', segments)

隐私、权限声明

1. 本插件需要申请的系统权限列表:

1. 麦克风权限(RECORD_AUDIO / NSMicrophoneUsageDescription) 用途:用于采集用户录音内容,生成本地录音文件。 2. Android 前台服务权限(FOREGROUND_SERVICE、FOREGROUND_SERVICE_MICROPHONE) 用途:用于 Android 端在特定业务场景下维持录音任务运行,支持后台录音相关能力。 3. Android 唤醒锁权限(WAKE_LOCK,可选) 用途:用于提升长时间录音场景下的运行稳定性,避免录音过程中被系统过早挂起。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。