更新记录
1.0.1(2026-04-09)
更新 IOS 版本
1.0.0(2026-04-09)
- 原生相机预览,支持前后摄像头切换
- 手动开始录制和停止录制
- 默认静音录制,可按需开启音频
- 支持配置录制最大时长
- 支持圆形、圆角、方形预览样式
- Android 支持录制过程中的预览帧回调
- 模板页支持按固定间隔抽帧并打印日志
平台兼容性
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-record-frame
austin-record-frame 是一个面向 App 端的 UTS 原生录制插件,提供原生相机预览、手动开始/停止录制、静音录制、圆形/圆角预览,以及录制过程中的周期抽帧能力。插件同时附带模板页,用于演示录制、抽帧开关控制、抽帧间隔设置,以及控制台输出视频路径和抽帧结果。
功能特性
- iOS / Android 原生相机预览
- 手动开始录制和停止录制
- 默认静音录制,可按需开启音频
- 支持配置录制最大时长
- 支持圆形、圆角、方形预览样式
- iOS / Android 都支持录制过程中的
framecapture预览帧回调 - 模板页支持按固定间隔抽帧并打印日志
适用场景
- 需要一个简单、可控的原生视频录制能力
- 需要在录制过程中持续拿到视频状态和文件路径
- 需要在业务页面里获取“最近一次抽帧图片”做预览、质检或后续识别
安装
将以下目录放入项目的 uni_modules 目录:
uni_modules/austin-record-frame
如果需要直接运行插件自带模板页中的视频文件抽帧演示,请同时安装依赖模块:
权限要求
默认行为
- 默认使用
:mute="true",只需要相机权限 - 录制文件和抽帧图片默认写入应用私有目录,不需要额外存储权限
- 当前插件不会主动保存到系统相册,所以默认不需要相册读写权限
iOS 配置
如果你通过 manifest.json 配置 iOS 权限文案,至少需要补上相机权限说明:
{
"app-plus": {
"distribute": {
"ios": {
"privacyDescription": {
"NSCameraUsageDescription": "用于录制视频和预览画面",
"NSMicrophoneUsageDescription": "用于录制视频声音"
}
}
}
}
}
说明:
NSCameraUsageDescription必填- 当
mute=false时,需要NSMicrophoneUsageDescription - 如果你的页面始终固定
mute=true,理论上可以不配置麦克风文案;但如果业务后面可能切到非静音录制,建议一并配置
Android 配置
android.permission.CAMERA- 当
mute=false时,还需要android.permission.RECORD_AUDIO
说明:
- 插件模板页已经包含相机权限申请流程
- 如果你在自己的业务页面里直接接入组件,建议在进入页面前自行确认权限状态
- 如果你的业务后续要把录制结果保存到相册,再额外配置相册相关权限
组件用法
<austin-record-frame
ref="recorderRef"
cameraPosition="front"
resolution="720p"
:mute="true"
:maxDurationMs="0"
:previewCornerRadiusRate="0.5"
:frameCaptureEnabled="true"
:frameCaptureIntervalMs="1000"
:frameCaptureQuality="85"
@ready="onRecorderReady"
@recordstart="onRecordStart"
@recordprogress="onRecordProgress"
@recordfile="onRecordFile"
@recordstop="onRecordStop"
@framecapture="onFrameCapture"
@error="onRecordError"
/>
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
cameraPosition |
string |
front |
摄像头位置,可选 front / back |
resolution |
string |
720p |
分辨率,可选 720p / 1080p |
mute |
boolean |
true |
是否静音录制 |
maxDurationMs |
number |
8000 |
最大录制时长,单位毫秒,<= 0 表示不自动停止 |
previewCornerRadiusRate |
number |
0.5 |
预览圆角比例,0.5 = 圆形,0 = 方形 |
frameCaptureEnabled |
boolean |
false |
是否开启录制中的周期抽帧 |
frameCaptureIntervalMs |
number |
1000 |
抽帧间隔,单位毫秒,建议 >= 200 |
frameCaptureQuality |
number |
85 |
JPG 输出质量,范围 1-100 |
事件
| 事件名 | 说明 | 推荐读取字段 |
|---|---|---|
ready |
组件准备完成,预览可用 | 无 |
recordstart |
开始录制 | filePath、durationMs、orientationDegrees |
recordprogress |
录制中进度回调 | durationMs |
recordfile |
录制文件可用时回调 | filePath、durationMs、orientationDegrees |
recordstop |
停止录制 | filePath、durationMs、orientationDegrees |
framecapture |
录制中抽帧回调 | filePath、imagePath、width、height、timeMs、durationMs、captureMode |
error |
录制或预览异常 | errCode、errMsg |
统一输出字段
Android 和 iOS 对外推荐的业务输出是一致的。业务层建议统一按下面这组字段消费,不要分平台写两套逻辑:
recordstart
{
filePath: string,
durationMs: number,
orientationDegrees: number
}
recordprogress
{
durationMs: number
}
recordfile / recordstop
{
filePath: string,
durationMs: number,
orientationDegrees: number
}
framecapture
{
filePath: string,
imagePath: string,
width: number,
height: number,
timeMs: number,
durationMs: number,
captureMode: 'preview'
}
error
{
errCode: number,
errMsg: string
}
补充说明:
- iOS 原生层内部有时会额外带
path作为filePath的别名,但对外统一按filePath消费即可 framecapture对外统一按imagePath、width、height、timeMs、durationMs读取即可- 正常接入这个插件时,不需要因为 Android / iOS 差异再额外写两套事件解析逻辑
方法
下面这几项是推荐作为跨平台统一业务 API 使用的方法:
| 方法名 | 说明 |
|---|---|
startPreview() |
开始预览 |
stopPreview() |
停止预览 |
startRecord() |
开始录制 |
stopRecord() |
停止录制 |
switchCamera(position) |
切换前后摄像头 |
getCurrentFilePath() |
获取当前录制文件路径或最近一次录制路径 |
补充说明:
- Android / iOS 的主调用方式是一致的,推荐只使用上面这组方法
- Android 额外暴露了
capturePreviewFrame()调试方法,但它不属于推荐的跨平台统一业务 API - iOS 当前也有内部兜底用的预览帧 getter,但同样不建议业务层直接依赖
模板页说明
当前目录下的 index.nvue 是插件模板页,主要演示以下能力:
- 原生相机预览
- 手动开始 / 停止录制
- 开启 / 关闭抽帧
- 设置抽帧间隔
- 设置抽帧质量
- 设置预览圆角
- 控制台打印录制视频路径
- 控制台打印每次抽帧结果
- 显示“最近一次抽帧”的图片预览
模板页主要用于业务验证和联调,你可以直接复制页面逻辑到自己的项目页面中继续扩展。
模板页中的视频文件抽帧能力依赖 austin-video-frame 视频抽帧插件。

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