宝贝腿开大点我添添你视频男男,中文字幕熟女人妻av一区二区三区,爱色成人网,大地资源高清播放在线观看在线电影在线观看 ,777米奇影视第四色

集團(tuán)站切換校區(qū)

驗證碼已發(fā)送,請查收短信

復(fù)制成功
微信號:togogoi
添加微信好友, 詳細(xì)了解課程
已復(fù)制成功,如果自動跳轉(zhuǎn)微信失敗,請前往微信添加好友
打開微信
圖標(biāo)

學(xué)習(xí)文章

當(dāng)前位置:首頁 > >學(xué)習(xí)文章 > >

harmonyOS之相機開發(fā)

發(fā)布時間: 2024-05-27 19:50:44

基本概念

相機是OpenHarmony多媒體進(jìn)程提供的服務(wù)之一,提供了相機的錄像、預(yù)覽、拍照功能,支持多用戶并發(fā)取流。

 

在進(jìn)行應(yīng)用的開發(fā)前,開發(fā)者應(yīng)了解以下基本概念:

視頻幀

視頻流指的是將一系列圖片數(shù)據(jù)按照固定時間間隔排列形成的數(shù)據(jù)流,每一張圖片數(shù)據(jù)成為一幀,這樣的一幀稱為視頻幀。

幀速率(FPS,Frames Per Second

視頻播放每秒鐘刷新圖片的速度,或是視頻每秒的幀數(shù),幀速率越高,視頻的觀感越流暢。

分辨率

每一幀的圖片信息都是由像素點組成的,分辨率描述了一張圖片中像素點的個數(shù)。例如1920*1080(1080P),是指圖片寬1920像素,高1080像素。

運作機制

多媒體服務(wù)進(jìn)程

 

多媒體服務(wù)作為系統(tǒng)服務(wù),在系統(tǒng)啟動時由Init進(jìn)程拉起,并初始化和分配媒體硬件資源(內(nèi)存/顯示硬件/圖像傳感器/編解碼器等)。初始化過程解析配置文件,確定了多媒體各個服務(wù)的能力和資源上限,通常由OEM廠商通過配置文件進(jìn)行配置。相機服務(wù)在多媒體進(jìn)程初始化時有以下配置項:

 

內(nèi)存池:所有媒體服務(wù)依賴于內(nèi)存池中的內(nèi)存輪轉(zhuǎn)運行

圖像傳感器:包括了傳感器類型、分辨率、ISP

圖像處理器:分辨率、碼率、圖像翻轉(zhuǎn)等

圖像編碼器:編碼格式、碼率、分辨率等

 

關(guān)鍵類的解釋

 

應(yīng)用通過持有下面4個類,配置和使用Camera的功能,包括了Camera類和它的三個異步回調(diào)類,三類回調(diào)分別對應(yīng)了不同類型的異步處理場景,詳見下表。

1 關(guān)鍵類的解釋

 

 

流的傳遞

 

Surface是多媒體傳遞音視頻的基本數(shù)據(jù)結(jié)構(gòu),Camera一般作為Surface中數(shù)據(jù)的生產(chǎn)者,在不同的場景下有特定的消費者。

 

相機的預(yù)覽和錄像輸出均為視頻流,拍照輸出為圖像幀,二者均通過Surface類進(jìn)行傳遞。Surface類可以屏蔽進(jìn)程內(nèi)/跨進(jìn)程的場景,進(jìn)行多媒體信息流的傳遞。

 

以錄像為例,用戶首先創(chuàng)建Recorder實例,并從Recorder中獲取對應(yīng)Surface,再將此Surface傳遞給Camera實例,此時Camera將作為生產(chǎn)者向Surface注入視頻流,而Recorder作為消費者從Surface中取出視頻流進(jìn)行保存,用戶的行為類似橋接,把二者通過Surface連接起來。

 

類似的,用戶也可以自行創(chuàng)建Surface傳遞給Camera實例,并實現(xiàn)消費者邏輯(例如通過網(wǎng)絡(luò)傳輸視頻流,或是將拍照的幀數(shù)據(jù)保存成圖片文件)。

 

圖形圖像模塊也通過SurfaceCamera獲取流資源

 

小型系統(tǒng)圖形圖像框架介紹

概述

小型系統(tǒng)圖形圖像子系統(tǒng)是一套輕量級圖形框架,框架包括輕量級 UI 控件、動畫、事件、2D 圖形庫、字體布局引擎、多后端渲染和窗口管理等模塊,主要用于運動手表、智能家居等小型帶屏設(shè)備的圖形 UI 顯示。

 

OpenHarmony 中各 UI 之間的關(guān)系

當(dāng)前對于 OpenHarmony 應(yīng)用界面開發(fā),你可能已經(jīng)了解到幾個不同的概念,比如 ArkUI 聲明式開發(fā)范式、ArkUI Web 開發(fā)范式等,那他們和當(dāng)前小型系統(tǒng)圖形圖像框架之間是什么關(guān)系呢?

 

當(dāng)前 [ace_engine]實現(xiàn)了標(biāo)準(zhǔn)系統(tǒng)的 ArkUI 聲明式開發(fā)范式和 ArkUI Web 開發(fā)范式兩套開發(fā)框架;根據(jù)小型系統(tǒng)的特點 [ace_engine_lite]實現(xiàn)了輕量級的 ArkUI Web 開發(fā)范式 lite 版本,其能力是 ArkUI Web 開發(fā)范式的子集。

 

按照系統(tǒng)類型分類如下:

標(biāo)準(zhǔn)系統(tǒng):

ArkUI 聲明式開發(fā)范式 (推薦)

ArkUI Web 開發(fā)范式

小型系統(tǒng):

ArkUI Web 開發(fā)范式 Lite

C++ (系統(tǒng)應(yīng)用)

 

小型系統(tǒng)圖形圖像框架中的 [ui_lite]  [ace_engine_lite]、 [ace_engine]的代碼實現(xiàn)關(guān)系如下圖:

 

如何確定應(yīng)用開發(fā)所需的 API 套件?對于標(biāo)準(zhǔn)系統(tǒng),優(yōu)先選擇 ArkUI 聲明式開發(fā)范式;對于小型系統(tǒng),請優(yōu)先考慮使用 ArkUI Web 開發(fā)范式 lite。而在某些配置較低的設(shè)備上進(jìn)行系統(tǒng)應(yīng)用開發(fā)時,則可以考慮選擇 C++ API,因為相比類 Web 范式,它具有更高的性能和更好的靈活性。

 

UI 控件

實現(xiàn)各種控件,如按鈕、文本、進(jìn)度條等各種基本控件。

提供列表、Swiper、圖片序列幀等復(fù)雜控件。

 

布局

實現(xiàn)網(wǎng)格布局、靈活布局(如居中、左對齊、右對齊)。

布局為一次性布局。布局函數(shù)每運行一次,會計算一次控件的位置,但是控件位置由其他方式改變時(如拖動),其他相關(guān)聯(lián)的控件位置不會自動發(fā)生變化,需要重新調(diào)用一次布局函數(shù)。

 

動畫

框架支持自定義動畫,所有動畫由 AnimatorManager 管理,根據(jù)屏幕刷新事件,由 AnimatorManager 周期性調(diào)用回調(diào)函數(shù)處理修改屬性變化,然后觸發(fā)刷新重新繪制組件,達(dá)到組件動畫效果。

提供動畫的開始/停止、暫停/恢復(fù)、創(chuàng)建/銷毀等各種操作 ,用于實現(xiàn)動畫效果。

 

事件

Input 事件包括觸摸屏觸摸輸入事件和物理按鍵輸入事件,引擎每運行一次,InputManager 是管理所有輸入設(shè)備的模塊,GUI 引擎每運行一次,InputManager 會讀取一次所有注冊的硬件設(shè)備的輸入,轉(zhuǎn)化為各種事件供UI控件使用。

 

繪制

2D 圖形繪制: 實現(xiàn)線、矩形、三角形、弧線的繪制操作。

圖像繪制:實現(xiàn)各種類型圖片的繪制能力,如 RGB565、RGB888、ARGB8888、PNGJPG 格式。

字體繪制:支持矢量字體的實時繪制、布局排版。

 

實現(xiàn)原理

小型系統(tǒng)圖形框架中,任務(wù)隊列由屏幕刷新同步信號驅(qū)動。每個任務(wù)都是一個 task,并存放在任務(wù)隊列中。周期性的屏幕刷新信號觸發(fā)周期性回調(diào),從而循環(huán)驅(qū)動任務(wù)隊列中的 task 執(zhí)行。輸入事件、動畫和渲染等操作均作為單獨的 task 運行。

 

事件交互

當(dāng)前圖形框架支持觸摸事件(PointerInputDevice)、按鍵事件(KeyInputDevice)、旋轉(zhuǎn)表冠事件(RotateInputDevice)。

 

輸入事件相關(guān)類圖如上,每類輸入事件根據(jù)自己特點,重寫 InputDevice 基類的 Read 函數(shù),讀取對應(yīng)的輸入數(shù)據(jù),然后根據(jù)輸入數(shù)據(jù)生成對應(yīng)的事件分發(fā)給 UI 控件,如 PointerInputDevice 讀取觸摸的坐標(biāo)點,根據(jù)坐標(biāo)點,從組件樹查找當(dāng)前坐標(biāo)對應(yīng)的控件,生成對應(yīng)的點擊、長按、拖拽事件,分發(fā)給對應(yīng)控件。

 

動效框架

每一個自定義動畫都需要繼承自 Animator 類,實現(xiàn) AnimatorCallback Callback 接口。所有的 Animator 都由 AnimatorManager 統(tǒng)一管理。 Callback 接口入?yún)楫?dāng)前動畫的 View,可以通過修改 View 對應(yīng)的屬性來產(chǎn)生動畫效果,如坐標(biāo)位置、顏色變換、縮放效果等。

 

渲染框架

每一個窗口 Window 持有一個 RootView

 

RootView 為當(dāng)前窗口的根節(jié)點,當(dāng)前窗口所有控件都必須掛載在 RootView 下才能顯示

 

UIView 為所有 View 的基類,每個 View 實現(xiàn)自己的 OnDraw 繪制函數(shù)

 

每個 View 顯示發(fā)生變化時,調(diào)用 Invalidate 函數(shù),將當(dāng)前區(qū)域標(biāo)記為臟區(qū)域

 

RootView 統(tǒng)一管理當(dāng)前窗口所有的臟區(qū)域信息

 

每次刷新信號觸發(fā),會遍歷繪制所有的 Window,每個 Window RootView 開始先進(jìn)行 Measure 布局,然后調(diào)用 Render 函數(shù)繪制,遍歷繪制所有臟區(qū)域內(nèi)的 View

 

相機運行流程

1. Camera創(chuàng)建流程

本進(jìn)程通過CameraManager創(chuàng)建Camera實例,并從服務(wù)端綁定camera設(shè)備,創(chuàng)建成功后異步通知developer。類之間的時序圖如下:

 

 

2. Camera錄像/預(yù)覽流程

開發(fā)者首先通過CameraKit創(chuàng)建Camera,然后FrameConfig類對錄像或者預(yù)覽幀屬性進(jìn)行配置。錄像/預(yù)覽時序如下:

2 Camera錄像/預(yù)覽時序圖

 

上一篇: 神經(jīng)網(wǎng)絡(luò)預(yù)測得準(zhǔn)確嗎?

下一篇: 開啟智能生態(tài)的新紀(jì)元:分布式技術(shù)在鴻蒙操作系統(tǒng)中的應(yīng)用與探索

十九年老品牌
微信咨詢:gz_togogo 咨詢電話:18127429208 咨詢網(wǎng)站客服:在線客服

相關(guān)課程推薦

在線咨詢 ×

您好,請問有什么可以幫您?我們將竭誠提供最優(yōu)質(zhì)服務(wù)!