運(yùn)行
系統(tǒng)啟動(dòng)成功后,取源碼out目錄下的helloworld可執(zhí)行文件放入系統(tǒng)的bin目錄,通過(guò)以下步驟運(yùn)行“Hello World”。
操作步驟
在啟動(dòng)界面進(jìn)入bin目錄。
cd bin
進(jìn)入bin目錄后可以看到helloworld文件,通過(guò)以下命令運(yùn)行helloworld程序。
./helloworld
界面打印“Hello World!”,程序運(yùn)行成功。
下一步學(xué)習(xí)
鴻蒙開發(fā)指導(dǎo)文檔:[qr23.cn/FBD4cY
。
[ate 導(dǎo)入OpenHarmony工程]
概述
本文檔將介紹如何基于IoT Camera開發(fā)板(Hi3516DV300),利用其攝像頭和屏幕,完成拍照、錄像和視頻預(yù)覽功能。
通過(guò)本文檔,開發(fā)者能夠?qū)penHarmony的攝像控制有更深入的了解,可參照本例嘗試完成“智能貓眼”、“智能后視鏡”、“智能帶屏音箱”等設(shè)備的開發(fā)。
若開發(fā)者想先查看示例效果,請(qǐng)進(jìn)入[應(yīng)用實(shí)例]。如需自定義應(yīng)用行為,可參考下節(jié)“示例開發(fā)”對(duì)示例代碼進(jìn)行修改。
應(yīng)用實(shí)例
本示例將運(yùn)行源碼中的camera示例代碼,通過(guò)本示例可以實(shí)現(xiàn)使用開發(fā)板進(jìn)行拍照、錄像及預(yù)覽等功能。
本示例源碼路徑為“applications/sample/camera/media/camera_sample.cpp”。
在運(yùn)行本示例前需先完成編譯燒錄、運(yùn)行鏡像等步驟
說(shuō)明: 開發(fā)板啟動(dòng)后默認(rèn)會(huì)加載launcher應(yīng)用,應(yīng)用的圖形界面默認(rèn)顯示在媒體圖層上方,會(huì)影響camera_sample的演示結(jié)果,因此需要在編譯或是打包時(shí)去掉launcher應(yīng)用。 修改方法 :將“build/lite/components/applications.json”中camera_sample_app組件的targets中"http://applications/sample/camera/launcher:launcher_hap"整行注釋或刪除。
本示例編譯結(jié)果路徑為“out/hi3516dv300/ipcamera_hi3516dv300_liteos/dev_tools/bin”,為讓文件能在單板中執(zhí)行,可將示例文件通過(guò)讀卡器復(fù)制至TF卡中,或者修改camera_sample的編譯腳本將結(jié)果文件復(fù)制至rootfs.img中。
修改源碼路徑“applications/sample/camera/media/BUILD.gn”中第一處的output_dir。- 修改前:output_dir = "$root_out_dir/dev_ools"
- 修改后:output_dir = "$root_out_dir/"
重新執(zhí)行源碼倉(cāng)編譯并燒寫入單板后,可在單板bin目錄下找到camera_sample文件。
須知: 實(shí)例運(yùn)行拍照和錄像功能需要插入TF卡(最大容量支持128GB),系統(tǒng)啟動(dòng)后自動(dòng)將TF卡掛載至/sdcard目錄,如果在啟動(dòng)后插入則需要手動(dòng)掛載。查看拍照和錄像內(nèi)容可將TF卡中內(nèi)容復(fù)制到電腦中進(jìn)行查看,預(yù)覽功能無(wú)需TF卡。
- 接下來(lái)可通過(guò)以下步驟運(yùn)行示例:
- 通過(guò)cd命令進(jìn)入可執(zhí)行程序的末端路徑,啟動(dòng)camera_sample,執(zhí)行命令如下圖。
圖 1 啟動(dòng)示例[]()
運(yùn)行后的控制命令如串口打印所示,按s鍵停止當(dāng)前操作(包括錄像和預(yù)覽),按q鍵退出示例程序。 - 按1進(jìn)行拍照,拍照的文件格式為jpg,存儲(chǔ)在/sdcard,文件名Capture*
圖 2 輸入拍照指令后串口打印日志[]()
若想查看保存文件,可在退出程序后進(jìn)入文件系統(tǒng)查看,退出后重新進(jìn)入請(qǐng)回到步驟1。
圖 3 查看文件圖[]() - 按2進(jìn)行錄像,錄像的文件格式為mp4,存儲(chǔ)在/sdcard,文件名Record*,按s鍵停止
圖 4 輸入錄像指令后串口打印日志[]() - 按3進(jìn)行預(yù)覽,預(yù)覽圖像直接送至顯示屏,按s鍵停止。
圖 5 輸入預(yù)覽指令后串口打印日志[]()
預(yù)覽效果如下
圖 6 預(yù)覽效果[]() - 按q鍵退出
圖 7 輸出退出指令后串口打印日志[]()
相機(jī)應(yīng)用開發(fā)
基本概念
相機(jī)是OpenHarmony多媒體進(jìn)程提供的服務(wù)之一,提供了相機(jī)的錄像、預(yù)覽、拍照功能,支持多用戶并發(fā)取流。
在進(jìn)行應(yīng)用的開發(fā)前,開發(fā)者應(yīng)了解以下基本概念:
- 視頻幀
視頻流指的是將一系列圖片數(shù)據(jù)按照固定時(shí)間間隔排列形成的數(shù)據(jù)流,每一張圖片數(shù)據(jù)成為一幀,這樣的一幀稱為視頻幀。 - 幀速率(FPS,F(xiàn)rames Per Second)
視頻播放每秒鐘刷新圖片的速度,或是視頻每秒的幀數(shù),幀速率越高,視頻的觀感越流暢。 - 分辨率
每一幀的圖片信息都是由像素點(diǎn)組成的,分辨率描述了一張圖片中像素點(diǎn)的個(gè)數(shù)。例如1920*1080(1080P),是指圖片寬1920像素,高1080像素。
運(yùn)作機(jī)制
- 多媒體服務(wù)進(jìn)程
多媒體服務(wù)作為系統(tǒng)服務(wù),在系統(tǒng)啟動(dòng)時(shí)由Init進(jìn)程拉起,并初始化和分配媒體硬件資源(內(nèi)存/顯示硬件/圖像傳感器/編解碼器等)。初始化過(guò)程解析配置文件,確定了多媒體各個(gè)服務(wù)的能力和資源上限,通常由OEM廠商通過(guò)配置文件進(jìn)行配置。相機(jī)服務(wù)在多媒體進(jìn)程初始化時(shí)有以下配置項(xiàng): - 關(guān)鍵類的解釋
應(yīng)用通過(guò)持有下面4個(gè)類,配置和使用Camera的功能,包括了Camera類和它的三個(gè)異步回調(diào)類,三類回調(diào)分別對(duì)應(yīng)了不同類型的異步處理場(chǎng)景,詳見下表。
表1 關(guān)鍵類的解釋對(duì)象 用途 舉例 Camera 對(duì)相機(jī)進(jìn)行靜態(tài)配置(通過(guò)配置類),觸發(fā)相機(jī)基本功能 拍照/錄像/預(yù)覽 CameraDeviceCallback 處理相機(jī)硬件狀態(tài)變化 可用/不可用 CameraStateCallback 處理camera自身狀態(tài)變化 創(chuàng)建/釋放 FrameStateCallback 處理幀狀態(tài)的變化 拍照開始和結(jié)束/幀率發(fā)生變化
HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
- 流的傳遞
Surface是多媒體傳遞音視頻的基本數(shù)據(jù)結(jié)構(gòu),Camera一般作為Surface中數(shù)據(jù)的生產(chǎn)者,在不同的場(chǎng)景下有特定的消費(fèi)者。
相機(jī)的預(yù)覽和錄像輸出均為視頻流,拍照輸出為圖像幀,二者均通過(guò)Surface類進(jìn)行傳遞。Surface類可以屏蔽進(jìn)程內(nèi)/跨進(jìn)程的場(chǎng)景,進(jìn)行多媒體信息流的傳遞。
以錄像為例,用戶首先創(chuàng)建Recorder實(shí)例,并從Recorder中獲取對(duì)應(yīng)Surface,再將此Surface傳遞給Camera實(shí)例,此時(shí)Camera將作為生產(chǎn)者向Surface注入視頻流,而Recorder作為消費(fèi)者從Surface中取出視頻流進(jìn)行保存,用戶的行為類似橋接,把二者通過(guò)Surface連接起來(lái)。
類似的,用戶也可以自行創(chuàng)建Surface傳遞給Camera實(shí)例,并實(shí)現(xiàn)消費(fèi)者邏輯(例如通過(guò)網(wǎng)絡(luò)傳輸視頻流,或是將拍照的幀數(shù)據(jù)保存成圖片文件)。
圖形圖像模塊也通過(guò)Surface從Camera獲取流資源,具體步驟詳見[圖形圖像開發(fā)指導(dǎo)] - 相機(jī)運(yùn)行流程
- Camera創(chuàng)建流程
本進(jìn)程通過(guò)CameraManager創(chuàng)建Camera實(shí)例,并從服務(wù)端綁定camera設(shè)備,創(chuàng)建成功后異步通知developer。類之間的時(shí)序圖如下:
圖1 Camera創(chuàng)建時(shí)序圖 - Camera錄像/預(yù)覽流程
開發(fā)者首先通過(guò)CameraKit創(chuàng)建Camera,然后FrameConfig類對(duì)錄像或者預(yù)覽幀屬性進(jìn)行配置。錄像/預(yù)覽時(shí)序如下:
圖2 Camera錄像/預(yù)覽時(shí)序圖
- Camera創(chuàng)建流程
審核編輯 黃宇
-
源碼
+關(guān)注
關(guān)注
8文章
652瀏覽量
29458 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5121瀏覽量
98217 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2392瀏覽量
43059 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1982瀏覽量
30580 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3747瀏覽量
16592
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論