0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙OpenHarmony【小型系统 实战应用】(基于Hi3516开发板)

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-28 17:35 次阅读

运行

系统启动成功后,取源码out目录下的helloworld可执行文件放入系统的bin目录,通过以下步骤运行“Hello World”。

操作步骤

  1. 在启动界面进入bin目录。

    cd bin
    
  2. 进入bin目录后可以看到helloworld文件,通过以下命令运行helloworld程序。

    ./helloworld
    

    界面打印“Hello World!”,程序运行成功。

    quickstart-pkg-3516-running

下一步学习

鸿蒙开发指导文档:[qr23.cn/FBD4cY

[ate 导入OpenHarmony工程]

概述

本文档将介绍如何基于IoT Camera开发板(Hi3516DV300),利用其摄像头和屏幕,完成拍照、录像和视频预览功能。

通过本文档,开发者能够对OpenHarmony的摄像控制有更深入的了解,可参照本例尝试完成“智能猫眼”、“智能后视镜”、“智能带屏音箱”等设备的开发。

若开发者想先查看示例效果,请进入[应用实例]。如需自定义应用行为,可参考下节“示例开发”对示例代码进行修改。

应用实例

本示例将运行源码中的camera示例代码,通过本示例可以实现使用开发板进行拍照、录像及预览等功能。

  • 本示例源码路径为“applications/sample/camera/media/camera_sample.cpp”。

  • 在运行本示例前需先完成编译烧录、运行镜像等步骤

    说明: 开发板启动后默认会加载launcher应用,应用的图形界面默认显示在媒体图层上方,会影响camera_sample的演示结果,因此需要在编译或是打包时去掉launcher应用。 修改方法 :将“build/lite/components/applications.json”中camera_sample_app组件的targets中"//applications/sample/camera/launcher:launcher_hap"整行注释或删除。

  • 本示例编译结果路径为“out/hi3516dv300/ipcamera_hi3516dv300_liteos/dev_tools/bin”,为让文件能在单板中执行,可将示例文件通过读卡器复制至TF卡中,或者修改camera_sample的编译脚本将结果文件复制至rootfs.img中。
    修改源码路径“applications/sample/camera/media/BUILD.gn”中第一处的output_dir。

    • 修改前:output_dir = "$root_out_dir/dev_ools"
    • 修改后:output_dir = "$root_out_dir/"

    重新执行源码仓编译并烧写入单板后,可在单板bin目录下找到camera_sample文件。

须知: 实例运行拍照和录像功能需要插入TF卡(最大容量支持128GB),系统启动后自动将TF卡挂载至/sdcard目录,如果在启动后插入则需要手动挂载。查看拍照和录像内容可将TF卡中内容复制到电脑中进行查看,预览功能无需TF卡。

  • 接下来可通过以下步骤运行示例:
  1. 通过cd命令进入可执行程序的末端路径,启动camera_sample,执行命令如下图。
    图 1 启动示例[]()

    运行后的控制命令如串口打印所示,按s键停止当前操作(包括录像和预览),按q键退出示例程序。
  2. 按1进行拍照,拍照的文件格式为jpg,存储在/sdcard,文件名Capture*
    图 2 输入拍照指令后串口打印日志[]()

    若想查看保存文件,可在退出程序后进入文件系统查看,退出后重新进入请回到步骤1。
    图 3 查看文件图[]()
  3. 按2进行录像,录像的文件格式为mp4,存储在/sdcard,文件名Record*,按s键停止
    图 4 输入录像指令后串口打印日志[]()
  4. 按3进行预览,预览图像直接送至显示屏,按s键停止。
    图 5 输入预览指令后串口打印日志[]()

    预览效果如下
    图 6 预览效果[]()
  5. 按q键退出
    图 7 输出退出指令后串口打印日志[]()

相机应用开发

基本概念

相机是OpenHarmony多媒体进程提供的服务之一,提供了相机的录像、预览、拍照功能,支持多用户并发取流。

在进行应用的开发前,开发者应了解以下基本概念:

  • 视频帧
    视频流指的是将一系列图片数据按照固定时间间隔排列形成的数据流,每一张图片数据成为一帧,这样的一帧称为视频帧。
  • 帧速率(FPS,Frames Per Second)
    视频播放每秒钟刷新图片的速度,或是视频每秒的帧数,帧速率越高,视频的观感越流畅。
  • 分辨率
    每一帧的图片信息都是由像素点组成的,分辨率描述了一张图片中像素点的个数。例如1920*1080(1080P),是指图片宽1920像素,高1080像素。

运作机制

  • 多媒体服务进程
    多媒体服务作为系统服务,在系统启动时由Init进程拉起,并初始化和分配媒体硬件资源(内存/显示硬件/图像传感器/编解码器等)。初始化过程解析配置文件,确定了多媒体各个服务的能力和资源上限,通常由OEM厂商通过配置文件进行配置。相机服务在多媒体进程初始化时有以下配置项:
    • 内存池:所有媒体服务依赖于内存池中的内存轮转运行
    • 图像传感器:包括了传感器类型、分辨率、ISP等
    • 图像处理器:分辨率、码率、图像翻转等
    • 图像编码器:编码格式、码率、分辨率等
  • 关键类的解释
    应用通过持有下面4个类,配置和使用Camera的功能,包括了Camera类和它的三个异步回调类,三类回调分别对应了不同类型的异步处理场景,详见下表。
    表1 关键类的解释
    对象用途举例
    Camera对相机进行静态配置(通过配置类),触发相机基本功能拍照/录像/预览
    CameraDeviceCallback处理相机硬件状态变化可用/不可用
    CameraStateCallback处理camera自身状态变化创建/释放
    FrameStateCallback处理帧状态的变化拍照开始和结束/帧率发生变化

HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿

搜狗高速浏览器截图20240326151344.png

  • 流的传递
    Surface是多媒体传递音视频的基本数据结构,Camera一般作为Surface中数据的生产者,在不同的场景下有特定的消费者。
    相机的预览和录像输出均为视频流,拍照输出为图像帧,二者均通过Surface类进行传递。Surface类可以屏蔽进程内/跨进程的场景,进行多媒体信息流的传递。
    以录像为例,用户首先创建Recorder实例,并从Recorder中获取对应Surface,再将此Surface传递给Camera实例,此时Camera将作为生产者向Surface注入视频流,而Recorder作为消费者从Surface中取出视频流进行保存,用户的行为类似桥接,把二者通过Surface连接起来。
    类似的,用户也可以自行创建Surface传递给Camera实例,并实现消费者逻辑(例如通过网络传输视频流,或是将拍照的帧数据保存成图片文件)。
    图形图像模块也通过Surface从Camera获取流资源,具体步骤详见[图形图像开发指导]
  • 相机运行流程
    1. Camera创建流程
      本进程通过CameraManager创建Camera实例,并从服务端绑定camera设备,创建成功后异步通知developer。类之间的时序图如下:
      图1 Camera创建时序图
      zh-cn_image_0000001200114819
    2. Camera录像/预览流程
      开发者首先通过CameraKit创建Camera,然后FrameConfig类对录像或者预览帧属性进行配置。录像/预览时序如下:
      图2 Camera录像/预览时序图
      zh-cn_image_0000001200115193

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 源码
    +关注

    关注

    8

    文章

    632

    浏览量

    29100
  • 开发板
    +关注

    关注

    25

    文章

    4883

    浏览量

    97010
  • 鸿蒙
    +关注

    关注

    57

    文章

    2301

    浏览量

    42670
  • HarmonyOS
    +关注

    关注

    79

    文章

    1965

    浏览量

    29953
  • OpenHarmony
    +关注

    关注

    25

    文章

    3629

    浏览量

    16031
收藏 人收藏

    评论

    相关推荐

    鸿蒙OpenHarmony小型系统 编译】(基于Hi3516开发板

    OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码]。
    的头像 发表于 05-10 15:59 624次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>小型</b><b class='flag-5'>系统</b> 编译】(基于<b class='flag-5'>Hi3516</b><b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony【基于Hi3516DV300开发板(时钟应用开发)】

    如何快速搭建基于OpenHarmony标准系统Hi3516DV300开发板)的应用开发环境,并基于一个时钟APP示例逐步展示应用的创建、
    的头像 发表于 05-08 15:27 1086次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【基于<b class='flag-5'>Hi3516</b>DV300<b class='flag-5'>开发板</b>(时钟应用<b class='flag-5'>开发</b>)】

    鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

    小型系统外,Hi3516DV300开发板还支持标准系统。此章节简要介绍如何使用命令行在Hi3516
    的头像 发表于 05-08 09:26 786次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>南向:【<b class='flag-5'>Hi3516</b>标准<b class='flag-5'>系统</b>入门(命令行方式)】

    鸿蒙OpenHarmony南向:【Hi3516开发板介绍】

    Hi3516DV300作为新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP(Image Signal Processor)、H.265视频压缩编码器以及高性能NNIE引擎,具备低码率、高画质、低功耗等特点,并具备强劲的智能处理和分析能力。
    的头像 发表于 05-06 16:13 507次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>南向:【<b class='flag-5'>Hi3516</b><b class='flag-5'>开发板</b>介绍】

    鸿蒙OpenHarmony小型系统 烧录】(基于Hi3516开发板

    针对Hi3516DV300开发板,除了DevEco Device Tool(操作方法请参考烧录))外,还可以使用HiTool进行烧录。
    的头像 发表于 04-28 15:03 1191次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>小型</b><b class='flag-5'>系统</b> 烧录】(基于<b class='flag-5'>Hi3516</b><b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony【集成三方SDK】 (基于Hi3861开发板

    OpenHarmony致力于打造一套更加开放完善的IoT生态系统,为此OpenHarmony规划了一组目录,用于将各厂商的SDK集成到OpenHarmony中。本文档基于
    的头像 发表于 04-24 15:11 1006次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【集成三方SDK】 (基于<b class='flag-5'>Hi</b>3861<b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony小型系统运行案例】 (基于Hi3516开发板

    在完成Hi3516DV300的烧录后,还需要设置BootLoader引导程序,才能运行OpenHarmony系统
    的头像 发表于 04-23 21:00 388次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>小型</b><b class='flag-5'>系统</b>运行案例】 (基于<b class='flag-5'>Hi3516</b><b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony小型系统烧录】 (基于Hi3516开发板

    烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。
    的头像 发表于 04-23 17:29 624次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>小型</b><b class='flag-5'>系统</b>烧录】 (基于<b class='flag-5'>Hi3516</b><b class='flag-5'>开发板</b>)

    鸿蒙OpenHarmony小型系统编译】 (基于Hi3516开发板

    DevEco Device Tool支持Hi3516DV300开发板的源码一键编译功能,提供编译工具链和编译环境依赖的检测及一键安装,简化复杂编译环境的同时,提升了编译的效率。
    的头像 发表于 04-23 15:53 470次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【<b class='flag-5'>小型</b><b class='flag-5'>系统</b>编译】 (基于<b class='flag-5'>Hi3516</b><b class='flag-5'>开发板</b>)

    OpenHarmony鸿蒙南向开发案例:【智能猫眼(基于Hi3518开发板)】

    基于Hi3518开发板,使用开源OpenHarmony开发的RTSP协议流媒体应用。达到将Hi3518
    的头像 发表于 04-22 15:46 1849次阅读
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>鸿蒙</b>南向<b class='flag-5'>开发</b>案例:【智能猫眼(基于<b class='flag-5'>Hi</b>3518<b class='flag-5'>开发板</b>)】

    OpenHarmony鸿蒙南向开发案例:【智能猫眼(基于3516开发板)】

    基于Hi3516开发板,使用开源OpenHarmony开发的RTSP协议流媒体应用。达到将Hi3516
    的头像 发表于 04-19 22:01 521次阅读
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>鸿蒙</b>南向<b class='flag-5'>开发</b>案例:【智能猫眼(基于<b class='flag-5'>3516</b><b class='flag-5'>开发板</b>)】

    鸿蒙OpenHarmony【搭建Ubuntu环境】

    支持在Windows环境下进行编译,如Hi3861、Hi3516系列开发板。因此,建议使用Ubuntu的编译环境对源码进行编译。
    的头像 发表于 04-19 16:53 1219次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【搭建Ubuntu环境】

    鸿蒙OpenHarmony【搭建Windows环境】

    支持在Windows环境下进行编译,如Hi3861、Hi3516系列开发板。因此,建议使用Ubuntu的编译环境对源码进行编译。
    的头像 发表于 04-19 15:42 556次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OpenHarmony</b>【搭建Windows环境】

    OpenHarmony南向开发案例:【智能油烟机】

    基于Hi3516开发板,使用开源OpenHarmony开发的应用。
    的头像 发表于 04-18 15:54 973次阅读
    <b class='flag-5'>OpenHarmony</b>南向<b class='flag-5'>开发</b>案例:【智能油烟机】

    OpenHarmony南向开发案例:【智能中控屏】

    基于Hi3516开发板,使用开源OpenHarmony开发的应用。通过控制面板可以控制同一局域网内的空调,窗帘,灯等智能家居设备。
    的头像 发表于 04-17 16:12 341次阅读
    <b class='flag-5'>OpenHarmony</b>南向<b class='flag-5'>开发</b>案例:【智能中控屏】