更新记录

1.0.0(2026-06-23)

  • Android/iOS 双端:Camera2 / AVCaptureSession 原生相机预览
  • 实时帧捕获:NV12 格式 + Chunked Base64 传输,帧捕获模式 720p 默认
  • 全屏原生 UI:拍照 / 相册选择 / 翻转 / 关闭,原生按钮
  • 拍照返路径:拍照或相册选择后关闭相机,返回图片路径
  • 人脸框标记updateFaceRects 在预览层绘制
  • Chunked Base64 协议:大帧分块传输 + 自动重装(3秒超时)
  • 标准响应信封{code, msg, data} 格式
  • 调试开关debug: true 控制原生日志输出

平台兼容性

uni-app(4.18)

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

ly028-Camera UTS 双端实时帧相机

扫码下载体验
📱 下载体验 APK

Android/iOS 原生相机 UTS 插件,实时 NV12/YUV 帧数据输出,全屏原生 UI 预览,适用于人脸识别、AI 视觉等场景。

特性

  • 📷 全屏原生相机 UI — 高性能原生相机预览,非 WebView
  • 🔄 实时 NV12 帧捕获 — 逐帧回调 YUV 数据,支持 AI 视觉处理
  • 📱 双端一致 — Android / iOS API 完全相同,调用端无平台差异
  • 🎯 拍照 + 录像 — 支持拍照和视频录制
  • 🧩 UTS 插件 — uni-app 原生插件,即插即用

平台兼容

平台 最低版本 架构
Android 7.0 (API 24) arm64-v8a, armeabi-v7a
iOS 12.0 arm64

集成与调试

HBuilderX 自定义基座运行

  1. 插件市场购买插件后,在 manifest.json → App 原生插件配置中选择 ly028-Camera
  2. 选择需要使用的模块
  3. 自定义调试基座:菜单栏 → 运行 → 运行到手机或模拟器 → 制作自定义调试基座
  4. 制作完成后,选择自定义基座运行到真机即可调试所有功能

首次使用请确保已关联 uni-app 开发者证书,自定义基座有效期为 7 天,过期后需重新制作。

离线打包

插件为原生代码插件,离线打包需自行集成原生依赖。

快速开始

import * as Camera from '@/uni_modules/ly028-Camera'

// 1. 打开相机预览
Camera.openCamera({
  position: 'back',           // back / front
  frameCallback: true,        // 是否回调帧数据
}, (res) => {
  if (res.code === 0) {
    console.log('相机已启动')
  }
})

// 2. 监听帧数据
Camera.onFrameData((data) => {
  // data: { width, height, data: ArrayBuffer(NV12 格式), format: 'nv12' }
  console.log('帧数据:', data.width, data.height, data.data.byteLength)
})

// 3. 拍照
Camera.takePhoto((res) => {
  if (res.code === 0) {
    console.log('拍照成功:', res.path)
  }
})

// 4. 关闭相机
Camera.closeCamera()

全量 API 参考

相机生命周期

API 说明
openCamera(options, callback) 打开相机预览
closeCamera() 关闭相机释放资源
switchCamera(callback) 切换前后摄像头

帧捕获

API 说明
onFrameData(callback) 注册帧数据回调(NV12 格式)
offFrameData(callback) 移除帧数据回调
setFrameRate(fps) 设置帧率

拍照与录像

API 说明
takePhoto(callback) 拍照
startVideo(options, callback) 开始录像
stopVideo(callback) 停止录像

返回值格式

所有 API 返回统一 JSON 信封:

// 成功
{"code": 0, "data": {...}}

// 失败
{"code": 1, "subCode": 500, "msg": "错误描述"}

帧数据结构

{
  "width": 1920,
  "height": 1080,
  "format": "nv12",
  "data": "<ArrayBuffer>"
}

注意事项

  1. 帧数据较大(1080p 约 3MB/帧),建议按需开启 frameCallback
  2. 相机权限需在 manifest.json 中配置 CAMERARECORD_AUDIO 权限
  3. 前后切换会短暂黑屏,属正常现象
  4. 不支持模拟器,请在真机上调试

隐私声明

  • 本插件不采集任何用户数据
  • 所有相机操作在设备端本地完成
  • 不上传任何图像或视频数据

体验

扫码下载体验
📱 下载体验 APK

许可

  • 插件市场购买后获得使用授权
  • 禁止反编译、二次分发

隐私、权限声明

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

Android: CAMERA, RECORD_AUDIO; iOS: NSCameraUsageDescription; Harmony: ohos.permission.CAMERA

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

No data collected. All camera operations are local.

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

none

暂无用户评论。