更新记录
1.0.0(2026-03-06)
支持 Android / iOS 原生相机预览 支持视频录制与录制进度回调 支持录制完成返回视频文件路径 支持前后摄像头切换
平台兼容性
uni-app(4.61)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | √ | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.61)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | √ | √ | - | × |
xx-face-recorder
xx-face-recorder 是一个 uni-app 原生录制组件,支持 Android / iOS。
- 相机权限申请
- 相机预览
- 自动开始录制
- 录制进度回调
- 录制完成后输出视频路径
ref方法调用示例
试用说明
- 可以直接点击“试用插件”
- 试用插件里的 index.nvue,包含页面样式、图标、音频和基础录制逻辑
- 打自定义基座后运行模板页,控制台会直接打印录制文件
- 简单、直接,方便二次接入
功能特性
- 原生相机预览
- 视频录制
- 最大录制时长限制
- 前后摄像头切换
- 录制进度回调
- 录制文件回调
- iOS 文件路径兜底处理
安装
将 uni_modules/xx-face-recorder 目录复制到项目的 uni_modules 目录下。
模板页示例:
点击“试用插件”包含模板页面
权限要求
iOS
NSCameraUsageDescriptionNSMicrophoneUsageDescription
Android
android.permission.CAMERAandroid.permission.RECORD_AUDIO
说明:
- 当
mute=true时,模板页默认不采集麦克风 - 当前模板页默认传入的是
:mute="true"
组件用法
<xx-face-recorder
ref="recorderRef"
camera-position="front"
resolution="720p"
:mute="true"
:max-duration-ms="8000"
@ready="onRecorderReady"
@recordstart="onRecordStart"
@recordprogress="onRecordProgress"
@recordfile="onRecordFile"
@recordstop="onRecordStop"
@error="onRecordError"
/>
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
camera-position |
string |
front |
摄像头位置,可选 front / back |
resolution |
string |
720p |
分辨率,可选 720p / 1080p |
mute |
boolean |
false |
是否静音录制 |
max-duration-ms |
number |
8000 |
最大录制时长,单位毫秒 |
API
事件
| 事件名 | 说明 | 常用字段 |
|---|---|---|
ready |
相机预览就绪 | 无 |
recordstart |
开始录制 | 无 |
recordprogress |
录制进度更新 | durationMs |
recordfile |
录制文件可用 | filePath、durationMs |
recordstop |
录制停止 | filePath、durationMs |
error |
异常回调 | errCode、errMsg |
recordprogress 示例:
{
"durationMs": 1600
}
recordfile / recordstop 示例:
{
"filePath": "/path/to/face_xxx.mp4",
"durationMs": 8000
}
补充:
- Android 端可能额外返回
width、height、sizeBytes - iOS 端可能额外返回
path - 模板页实际主要使用
filePath和durationMs
方法
| 方法名 | 参数 | 说明 |
|---|---|---|
startPreview() |
无 | 开始预览 |
stopPreview() |
无 | 停止预览 |
startRecord() |
无 | 开始录制 |
stopRecord() |
无 | 停止录制 |
switchCamera(position) |
front / back |
切换前后摄像头 |
getCurrentFilePath() |
无 | 获取当前或最近一次录制文件路径 |
模板页字段
| 字段名 | 说明 |
|---|---|
maxDurationMs |
最大录制时长 |
recorderMounted |
组件是否已挂载 |
isIOS |
当前是否为 iOS |
recording |
当前是否正在录制 |
elapsedMs |
当前录制时长 |
statusText |
页面状态提示文案 |
actionTip |
当前动作提示文案 |
lastRecordFilePath |
最近一次录制成功的视频文件路径 |
lastRecordDurationMs |
最近一次录制成功的时长 |
audioMuted |
当前是否静音 |
重点字段:
lastRecordFilePath
- 最近一次录制成功后得到的视频文件路径
- 上传、预览、调试都可以直接用它
lastRecordDurationMs
- 最近一次录制成功的时长,单位毫秒
- 常用于展示录制结果或业务上报
模板页示例方法
模板页里保留了几组最常见的调用示例:
| 方法名 | 说明 |
|---|---|
startPreviewExample() |
手动开始预览示例 |
stopPreviewExample() |
手动停止预览示例 |
startRecordExample() |
手动开始录制示例 |
stopRecordExample() |
手动停止录制示例 |
switchToFrontCamera() |
切换前置摄像头示例 |
switchToBackCamera() |
切换后置摄像头示例 |
restartRecord() |
重新录制示例 |
使用示例
1. 通过 ref 调用方法
const recorder = this.$refs.recorderRef
recorder.startPreview()
recorder.startRecord()
recorder.stopRecord()
recorder.switchCamera('back')
const filePath = recorder.getCurrentFilePath()
console.log('当前文件路径:', filePath)
2. 只打印录制结果
async onRecordFile(evt) {
const filePath = await this.resolveRecordFilePath(evt)
const durationMs = this.extractDurationMs(evt)
console.log('录制文件路径:', filePath)
console.log('录制时长:', durationMs)
}
3. 录制完成后预览视频
async onRecordStop(evt) {
const filePath = await this.resolveRecordFilePath(evt)
if (!filePath) return
uni.previewMedia({
current: 0,
sources: [
{
url: filePath,
type: 'video',
},
],
})
}
模板页关键方法
这些方法建议保留:
normalizeEventPayloadreadPayloadValueresolveRecordFilePathensureCameraPermissionhandleRecordResult
控制台日志
[identification][permission-result][identification][ready][identification][record-start][identification][record-stop][identification][record-file-ready][identification][record-error][identification][record-file]

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 590
赞赏 4
下载 11352767
赞赏 1869
赞赏
京公网安备:11010802035340号