【鸿蒙性能优化】基于Camera Kit,获取相机流数据传递给native,进行压缩编码

往期知识点整理

示例场景:ATS侧启动相机,使用摄像头采集视频流数据,获取相机视频流数据传递到native侧,通过buffer模式将视频编码成MP4文件保存到沙箱路径。

方案描述:具体实现步骤可分为:

Step1:申请权限,启动相机。

Step2: 启动录制,获取视频流数据,获取一帧图像转成JPG格式保存到沙箱路径。

Step3: 视频流数据传递到native侧,进行压缩编码,生成文件保存。

步骤一: 申请权限,启动相机。需要相机、麦克风、媒体位置、写入媒体和读取媒体权限。


"requestPermissions": [

{

"name": "ohos.permission.CAMERA",

"reason": "$string:app_name",

"usedScene": {

"abilities": [

"FormAbility"

],

"when": "always"

}

},

{

"name": "ohos.permission.MICROPHONE",

"reason": "$string:app_name",

"usedScene": {

"abilities": [

"FormAbility"

],

"when": "always"

}

},

{

"name": "ohos.permission.MEDIA_LOCATION",

"reason": "$string:app_name",

"usedScene": {

"abilities": [

"FormAbility"

],

"when": "always"

}

},

{

"name": "ohos.permission.WRITE_MEDIA",

"reason": "$string:app_name",

"usedScene": {

"abilities": [

"FormAbility"

],

"when": "always"

}

},

{

"name": "ohos.permission.READ_MEDIA",

"reason": "$string:app_name",

"usedScene": {

"abilities": [

"FormAbility"

],

"when": "always"

}

}

]

2:启动相机,预览实现。导入camera接口,创建双路预览流通道,使用XComponent组件和ImageReceiver组件创建Surface用来显示和获取预览图像。


async function createDualChannelPreview(cameraManager: camera.CameraManager, XComponentSurfaceId: string, receiver: image.ImageReceiver): Promise<void> {

// 获取支持的相机设备对象

let camerasDevices: Array<camera.CameraDevice> = cameraManager.getSupportedCameras();

// 获取支持的模式类型

let sceneModes: Array<camera.SceneMode> = cameraManager.getSupportedSceneModes(camerasDevices[0]);

let isSupportPhotoMode: boolean = sceneModes.indexOf(camera.SceneMode.NORMAL_PHOTO) >= 0;

if (!isSupportPhotoMode) {

console.error('photo mode not support');

return;

}

// 获取profile对象

let
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值