CameraContext.onCameraFrame收藏我的收藏
收藏
我的收藏基础库 1.78.0 开始支持本方法,这是一个同步方法。
获取 Camera 实时帧数据,返回监听器 CameraFrameListener。
前提条件 | 无 |
业务背景 | 无 |
使用限制 | 无 |
注意事项 |
|
支持沙盒 | 否 |
相关教程 | 无 |
语法
CameraContext.onCameraFrame(callback)
参数说明
callback
类型 | 默认值 | 必填 | 说明 | 最低支 持版本 |
---|---|---|---|---|
function | 是 | 回调函数 | 1.78.0 |
callback 是一个回调函数,接收 object 类型的参数,属性如下:
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
width | number | 图像数据矩形的宽度(单位:像素) | 1.78.0 |
height | number | 图像数据矩形的高度 | 1.78.0 |
data | arrayBuffer | 图像像素点数据,一维数组,每四项表示一个像素点的 rgba | 1.78.0 |
timestamp | number | 当前相机画面对应的时间戳,单位是纳秒 | 1.78.0 |
返回值
类型 | 说明 | 最低支持版本 |
---|---|---|
object | 1.78.0 |
扫码体验
请使用字节宿主APP扫码
代码示例
<!-- index.ttml --> <camera class="camera" frame-size="medium" device-position="back" binderror="onError"></camera> <button type="primary" size="default" bindtap="startOnFrame"> 开始接收帧数据 </button> <view class="page-body"> <view>第 {{counter}} 帧</view> </view>
// index.js Page({ data: { counter: 0, }, onLoad: function (options) { tt.getSetting({ success: (res) => { let cameraAllowed = res.authSetting["scope.camera"]; if (!cameraAllowed) { tt.showToast({ title: "请授权相机后重新进入" }); } }, fail: (err) => { tt.showModal({ title: "获取授权失败", content: JSON.stringify(err), }); }, }); }, startOnFrame(e) { const cameraCtx = tt.createCameraContext(); const listener = cameraCtx.onCameraFrame((frame) => { this.setData({ counter: this.data.counter + 1, }); }); listener.start({ success: (res) => { tt.showToast({ title: "开始接收帧数据" }); }, fail: (err) => { tt.showModal({ title: "接收失败", content: JSON.stringify(err), }); }, }); }, onError(err) { tt.showModal({ title: "相机出错了", content: JSON.stringify(err), }); }, });
点击纠错