更新记录
0.2.2(2026-01-24)
- fix: 修复鸿蒙因增加的
disableFileOutput问题
0.2.1(2026-01-24)
- fix: 增加disableFileOutput禁止生成文件
0.2.0(2026-01-23)
- fix: 去掉安卓存储权限
平台兼容性
uni-app(4.34)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | 5.0 | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | - | √ | √ | - | - | - |
uni-app x(4.61)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | 5.0 | √ | √ | √ |
lime-recorder
基于 getRecorderManager API 实现的跨平台录音插件,兼容 iOS、Android、HarmonyOS、Web 和小程序平台。
文档
安装
- 在 HBuilderX 中导入插件
- 在需要使用的页面或组件中导入
getRecorderManager方法
基础使用
模板部分
<template>
<view>
<button @click="startRecord">开始录音</button>
<button @click="endRecord">录音结束</button>
<button @click="playVoice">播放</button>
<button @click="stopVoice">暂停播放</button>
</view>
</template>
脚本部分
// Vue 3 Composition API
import { getRecorderManager, type LimeRecorderManagerStartOption } from '@/uni_modules/lime-recorder'
const recorderManager = getRecorderManager();
const player = uni.createInnerAudioContext()
recorderManager.onStop((res)=> {
console.log('recorder stop', res);
player.src = res.tempFilePath;
});
const startRecord = ()=> {
console.log('开始录音');
recorderManager.start({
frameSize: 1,
sampleRate: 16000,
numberOfChannels: 1,
format: 'wav',
encodeBitRate: 48000
} as LimeRecorderManagerStartOption);
}
const endRecord = () => {
console.log('录音结束');
recorderManager.stop();
}
const playVoice = () => {
console.log('播放录音');
player.play()
}
const stopVoice = () => {
console.log('停止播放');
player.stop()
}
高级功能
实时帧回调
UniAppX 平台
// 监听音频帧数据
recorderManager.onFrameRecorded((res) => {
const { frameBuffer, isLastFrame } = res;
// frameBuffer 为 ArrayBuffer 类型的音频帧数据
// isLastFrame 表示是否为最后一帧
// 处理音频帧数据,例如计算音量、绘制波形等
const buffer = new Int16Array(frameBuffer!);
let sum = 0;
for (let i = 0; i < buffer.length; i++) {
sum += Math.abs(buffer[i]);
}
const avgAmplitude = sum / buffer.length;
console.log('当前音量振幅:', avgAmplitude);
});
// 移除帧回调监听
// recorderManager.offFrameRecorded(callback);
UniApp 平台
// 监听音频帧数据
recorderManager.onFrameRecorded((res) => {
const { frameBuffer, isLastFrame, base64 } = res;
// frameBuffer 为 ArrayBuffer 类型的音频帧数据
// base64 为 string 类型的音频帧数据,是由于uniapp限制才把ArrayBuffer转成base64
// isLastFrame 表示是否为最后一帧
// 处理音频帧数据,例如计算音量、绘制波形等
const buffer = new Int16Array(res.frameBuffer || uni.base64ToArrayBuffer(base64));
let sum = 0;
for (let i = 0; i < buffer.length; i++) {
sum += Math.abs(buffer[i]);
}
const avgAmplitude = sum / buffer.length;
console.log('当前音量振幅:', avgAmplitude);
});
// 移除帧回调监听
// recorderManager.offFrameRecorded(callback);
API
方法
getRecorderManager()
获取录音管理器实例。
recorderManager.start(options)
开始录音。
参数说明:
optionsObject 录音参数frameSizeNumber 帧大小,单位:KBsampleRateNumber 采样率,单位:HznumberOfChannelsNumber 声道数formatString 录音格式,支持 'wav'、'pcm' 等encodeBitRateNumber 编码码率
recorderManager.stop()
停止录音。
recorderManager.pause()
暂停录音。
recorderManager.resume()
恢复录音。
recorderManager.cancel()
取消录音。
事件监听
recorderManager.onStart(callback)
监听录音开始事件。
recorderManager.onStop(callback)
监听录音停止事件。
回调参数:
resObjecttempFilePathString 录音文件临时路径durationNumber 录音时长,单位:msfileSizeNumber 文件大小,单位:Byte
recorderManager.onFrameRecorded(callback)
监听录音帧数据事件。
回调参数:
resObjectframeBufferArrayBuffer 音频帧数据isLastFrameBoolean 是否为最后一帧
recorderManager.onError(callback)
监听录音错误事件。
recorderManager.onPause(callback)
监听录音暂停事件。
recorderManager.onResume(callback)
监听录音恢复事件(未实现)。
移除事件监听
recorderManager.offStart(callback)recorderManager.offStop(callback)recorderManager.offFrameRecorded(callback)recorderManager.offError(callback)recorderManager.offPause(callback)recorderManager.offResume(callback)
平台兼容性
| 平台 | 支持情况 | 注意事项 |
|---|---|---|
| iOS | ✅ | 需在 Info.plist 中添加麦克风权限 |
| Android | ✅ | 需在 AndroidManifest.xml 中添加麦克风权限 |
| HarmonyOS | ✅ | 需添加麦克风权限 |
| Web | ✅ | 需在 HTTPS 环境下使用 |
| 小程序 | ✅ | 需在小程序后台配置录音权限 |
常见问题
-
Web 端录音无输出文件
- 确保在 HTTPS 环境下使用
- 检查浏览器是否支持 MediaRecorder API
-
音频帧数据处理
- Web 端需注意音频数据格式,建议使用 16 位 PCM 格式
- 处理音频数据时注意线程安全
-
权限问题
- 确保在各平台都正确配置了麦克风权限
- 在调用录音前先获取用户授权
打赏
如果你觉得本插件解决了你的问题,赠人玫瑰,手留余香。


收藏人数:
购买源码授权版(
试用
赞赏(6)
下载 68455
赞赏 525
下载 11215155
赞赏 1855
赞赏
京公网安备:11010802035340号