HarmonyOS 如何获取相机流来做后处理?

​我们需要获取相机的实时预览流,做完后处理后再交由xcomponent上屏我们通过这篇文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/native-camera-preview-imagereceiver-V5

发现流处理需要借助ImageReceiver来实现,但ImageReceiver的相关接口所返回的数据都需要再过一下应用层,这就会遇到需要在ImageReceiver拿到image的数据后,再通过napi传递给cpp层,cpp层再根据image的数据做解码操作,然后再上传纹理至GPU才能获得texture。连续的应用层<->cpp层的数据传递有很大的性能损耗,而且额外的解码操作也会产生性能损耗。请问是否有直接获取到相机流texture的方式或方法呢?​

HarmonyOS
2024-11-11 12:02:58
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

​native相机支持传入surfaceID 获取预流输出,从surface可以拿到buffer。

使用NativeImage的SurfaceId来创建。​

PreviewOutput,OH_CameraManager_CreatePreviewOutput(cameraManager, previewProfile, previewSurfaceId, &previewOutput);

​后发现在OH_PreviewOutput_Start的时候会报错CAMERA_SERVICE_FATAL_ERROR:

开启预览不需要调用OH_PreviewOutput_Start,将预览流加入会话,启动会话就可以了,demo里面已经实现了,不需额外的方法调用OH_PreviewOutput_Start。

另外demo里面加入xcomponent的surfaceid可以正常预览。获取相机的实时预览流,做完后处理后再交由xcomponent上屏,不需要拍照流。​

分享
微博
QQ
微信
回复
2024-11-11 16:16:43
相关问题
如何用openGL解码后处理
1725浏览 • 0回复 待解决
fetch 怎么超时处理
524浏览 • 1回复 待解决
如何连续获取相机预览流数据
702浏览 • 1回复 待解决
HarmonyOS调用相机设备API获取失败问题
440浏览 • 1回复 待解决
HarmonyOS如何代码混淆
543浏览 • 1回复 待解决
HarmonyOS如何控制相机拍照?
179浏览 • 0回复 待解决