OpenHarmony Camera组件简介

简介

在当今数字化时代,相机功能已成为各类应用的标配,无论是记录生活点滴、分享精彩瞬间,还是为专业创作提供支持,都离不开强大的相机功能。OpenHarmony系统下的 Camera组件为开发者提供了一套完备的相机开发解决方案,助力打造功能丰富、体验卓越的相机应用。

应用通过Camera组件访问和操作相机硬件,实现基础操作,如预览、拍照和录像;还可以通过接口组合完成更多操作,开发更丰富的功能,如控制闪光灯和曝光时间、对焦或调焦等。

开发场景

定制化相机应用或模块开发:如果开发者想要开发一款独具特色的相机应用,或是在现有应用中融入个性化的相机模块,就需要深入研究 Camera组件的开发模型和工作流程,详细API说明可参考 Camera

便捷调用系统相机功能:当开发者只是希望在应用中实现简单的拍摄或录制功能时,CameraPicker 便是最佳选择,它最大的优势在于无需繁琐的相机权限申请流程,能够直接调用系统相机,快速完成照片拍摄或录像,具体可参考Camera Picker

开发架构

相机工作流程

Camera的工作流程如下图所示,可以概括为Camera输入设备管理、会话管理和相机输出管理三个紧密相连的部分。

  • 相机设备调用和控制摄像头采集数据,作为相机输入流。
  • 会话管理负责配置和管理Camera的输入流和输出流,配置输入流即选择某一摄像头操作,配置输出流即选择数据的输出形式。应用还可以通过切换会话满足不同场景的拍摄需求。
  • 配置相机的输出流,即将采集的数据以预览流、拍照流或视频流输出。

相机开发模型

如上图所示,相机开发模型展示了相机应用与系统各组件之间的协作关系。

相机应用通过控制相机实现图像显示(预览)、照片保存(拍照)、视频录制(录像)等基础操作。在这个过程中,相机服务会控制相机设备采集和输出数据,采集的图像数据在相机底层的Camera HDI直接通过BufferQueue传递到具体的功能模块进行处理。BufferQueue 主要负责将底层处理的数据及时传递到上层,用于图像显示或处理,在应用开发中无需深入了解其具体运作细节。

以视频录制为例进行说明,相机应用录制视频时,媒体录制服务先创建一个视频Surface(Surface内部包含BufferQueue)用于传递数据,并提供给相机应用,相机应用将Surface配置给相机服务,相机服务可控制相机设备采集视频数据,生成视频流,采集的数据经过Camera HDI处理后,通过Surface将视频流传递给媒体录制服务,媒体录制服务对视频数据进行处理后,保存为视频文件,完成视频录制。

相关推荐
小菜刀_17 小时前
OpenHarmony LiteOS-M Shell 命令开发指南
openharmony·loongarch·liteos-m
麒麟ZHAO17 小时前
Flutter 框架跨平台鸿蒙开发 - 智能衣柜衣物换季
flutter·华为·harmonyos
不爱吃糖的程序媛17 小时前
鸿蒙三方库适配读懂 `thirdparty/AES/.gitignore`:哪些文件不该进 Git?
git·elasticsearch·harmonyos
想你依然心痛17 小时前
HarmonyOS 5.0教育科技开发实战:构建AI个性化学习与分布式协同教育系统
人工智能·学习·harmonyos
麒麟ZHAO17 小时前
鸿蒙flutter第三方库适配 - 实时天气查询
flutter·华为·harmonyos
弓.长.17 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-indicators — 加载指示器组件
react native·react.js·harmonyos
弓.长.17 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-vector-icons — 矢量图标组件
react native·react.js·harmonyos
爱凤的小光17 小时前
ROS之CameraInfo---个人学习篇
camera·ros1
autumn20051 天前
Flutter 框架跨平台鸿蒙开发 - 虚拟纪念馆
flutter·华为·harmonyos
2301_822703201 天前
渐变壁纸生成:基于鸿蒙Flutter的跨平台壁纸创建工具
flutter·华为·harmonyos·鸿蒙