運行
系統啟動成功后,取源碼out目錄下的helloworld可執行文件放入系統的bin目錄,通過以下步驟運行“Hello World”。
操作步驟
在啟動界面進入bin目錄。
cd bin
進入bin目錄后可以看到helloworld文件,通過以下命令運行helloworld程序。
./helloworld
界面打印“Hello World!”,程序運行成功。
下一步學習
鴻蒙開發指導文檔:[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中"http://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卡。
- 接下來可通過以下步驟運行示例:
- 通過cd命令進入可執行程序的末端路徑,啟動camera_sample,執行命令如下圖。
圖 1 啟動示例[]()
運行后的控制命令如串口打印所示,按s鍵停止當前操作(包括錄像和預覽),按q鍵退出示例程序。 - 按1進行拍照,拍照的文件格式為jpg,存儲在/sdcard,文件名Capture*
圖 2 輸入拍照指令后串口打印日志[]()
若想查看保存文件,可在退出程序后進入文件系統查看,退出后重新進入請回到步驟1。
圖 3 查看文件圖[]() - 按2進行錄像,錄像的文件格式為mp4,存儲在/sdcard,文件名Record*,按s鍵停止
圖 4 輸入錄像指令后串口打印日志[]() - 按3進行預覽,預覽圖像直接送至顯示屏,按s鍵停止。
圖 5 輸入預覽指令后串口打印日志[]()
預覽效果如下
圖 6 預覽效果[]() - 按q鍵退出
圖 7 輸出退出指令后串口打印日志[]()
相機應用開發
基本概念
相機是OpenHarmony多媒體進程提供的服務之一,提供了相機的錄像、預覽、拍照功能,支持多用戶并發取流。
在進行應用的開發前,開發者應了解以下基本概念:
- 視頻幀
視頻流指的是將一系列圖片數據按照固定時間間隔排列形成的數據流,每一張圖片數據成為一幀,這樣的一幀稱為視頻幀。 - 幀速率(FPS,Frames Per Second)
視頻播放每秒鐘刷新圖片的速度,或是視頻每秒的幀數,幀速率越高,視頻的觀感越流暢。 - 分辨率
每一幀的圖片信息都是由像素點組成的,分辨率描述了一張圖片中像素點的個數。例如1920*1080(1080P),是指圖片寬1920像素,高1080像素。
運作機制
- 多媒體服務進程
多媒體服務作為系統服務,在系統啟動時由Init進程拉起,并初始化和分配媒體硬件資源(內存/顯示硬件/圖像傳感器/編解碼器等)。初始化過程解析配置文件,確定了多媒體各個服務的能力和資源上限,通常由OEM廠商通過配置文件進行配置。相機服務在多媒體進程初始化時有以下配置項: - 關鍵類的解釋
應用通過持有下面4個類,配置和使用Camera的功能,包括了Camera類和它的三個異步回調類,三類回調分別對應了不同類型的異步處理場景,詳見下表。
表1 關鍵類的解釋對象 用途 舉例 Camera 對相機進行靜態配置(通過配置類),觸發相機基本功能 拍照/錄像/預覽 CameraDeviceCallback 處理相機硬件狀態變化 可用/不可用 CameraStateCallback 處理camera自身狀態變化 創建/釋放 FrameStateCallback 處理幀狀態的變化 拍照開始和結束/幀率發生變化
HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
- 流的傳遞
Surface是多媒體傳遞音視頻的基本數據結構,Camera一般作為Surface中數據的生產者,在不同的場景下有特定的消費者。
相機的預覽和錄像輸出均為視頻流,拍照輸出為圖像幀,二者均通過Surface類進行傳遞。Surface類可以屏蔽進程內/跨進程的場景,進行多媒體信息流的傳遞。
以錄像為例,用戶首先創建Recorder實例,并從Recorder中獲取對應Surface,再將此Surface傳遞給Camera實例,此時Camera將作為生產者向Surface注入視頻流,而Recorder作為消費者從Surface中取出視頻流進行保存,用戶的行為類似橋接,把二者通過Surface連接起來。
類似的,用戶也可以自行創建Surface傳遞給Camera實例,并實現消費者邏輯(例如通過網絡傳輸視頻流,或是將拍照的幀數據保存成圖片文件)。
圖形圖像模塊也通過Surface從Camera獲取流資源,具體步驟詳見[圖形圖像開發指導] - 相機運行流程
- Camera創建流程
本進程通過CameraManager創建Camera實例,并從服務端綁定camera設備,創建成功后異步通知developer。類之間的時序圖如下:
圖1 Camera創建時序圖 - Camera錄像/預覽流程
開發者首先通過CameraKit創建Camera,然后FrameConfig類對錄像或者預覽幀屬性進行配置。錄像/預覽時序如下:
圖2 Camera錄像/預覽時序圖
- Camera創建流程
審核編輯 黃宇
-
源碼
+關注
關注
8文章
643瀏覽量
29239 -
開發板
+關注
關注
25文章
5067瀏覽量
97589 -
鴻蒙
+關注
關注
57文章
2362瀏覽量
42883 -
HarmonyOS
+關注
關注
79文章
1977瀏覽量
30256 -
OpenHarmony
+關注
關注
25文章
3725瀏覽量
16368
發布評論請先 登錄
相關推薦
評論