智能家居之智能監控小記

1.手機是如何連接攝像頭

第一次連接的時候攝像頭需要通過網線和路由器連接,會給攝像頭分配一個ip地址,手機使用uid、密碼通過ip地址進行連接,類似javaweb中的登陸訪問操作


2.第一次怎麼連接攝像頭

首次連接攝像頭需要通過網線去連接攝像頭,然後手機通過wifi連接路由器,必須得到同一個網段下,然後通過手機去添加攝像頭,因爲我們已經有uid和密碼了,所以不用添加,這樣就會在手機中存儲下攝像頭的相關 信息,添加成功,就可以把網線拔了,下次連接的時候會從手機中將攝像頭的信息拿出來,這樣就可以實現使用手機在不同網段中連接攝像頭了。


3.操作時阻塞現象

手機去連接攝像頭的時候,是開了一個子線程通過jni調用.so文件中的方法去連接的,爲了避免阻塞現象的發送,sdk中對所有的子線程都做了加鎖操作,避免線程阻塞


4.攝像頭內部如何實現

攝像頭內部封裝了一個微型liunx系統和一個微型的web服務器,我們發送指令是發送給web服務器,然後web服務器根據指令,通過一些算法去告訴攝像頭執行什麼操作,通過在返還給攝像頭一些信息


5.移動操作中的指令參數:觸控點、輔助設備

觸控點:sdk中支持直接用手指在屏幕上滑動實現移動、放大等操作,所有會有一個觸 控點的參數,輔助設備:攝像頭支持外接麥克風和音響,所以會有一個輔助設備的參數存在,一般觸控點和輔助設備我們都有0表示就可以了,代表使用系統默認的參數


Init ();
調用init放的時候會通過jni調用.so文件中的方法去初始化IOTC(物聯雲聯機平臺)模塊,同時初始化av通道的最大數量(av就是音頻audio和視頻video,用於信號的輸入、輸出),爲連接做準備


New camera()?
初始化uid和密碼(初始化uid和密碼爲空字符串)  uid :20位的一個攝像頭的唯一標示,密碼 :連接攝像頭的密碼


registerIOTCListener()?
設置一個監聽IOTC指令的回調監聽,用於監聽指令的返回信息


Connect(uid)?
將我們的uid賦值給camera中uid屬性,然後開啓一個線程去連接設備,再開啓一個線程檢驗設備的狀態


Start()
將通道號(手機和攝像頭進行連接的一個通道的編號,必須保持一致,如果不一致會導致指令無法發送成功)、用戶名、密碼設置到av通道中,並開啓一個線程啓動設備


sendIOCtrl(channel,type,data[])
將指令添加到指令執行的隊列當中去等待執行,類似MessageQueue


Type:AVIOCTRLDEFs.IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_REQ
獲取用戶攝像頭支持的流信息的請求指令類型
IOTYPE:IO指令的類型
user:用戶
IPCAM :ip camera 
getsupportstream :獲取支持的流信息
req :request請求


data[] :指令的參數


attachCamera(Camera,channel)
設置一個回調監聽來獲取返回的圖片信息,同時開啓一個渲染線程通過while循環使用Canvas videoCanvas = mSurHolder.lockCanvas();不停的進行圖片渲染


startShow();
開啓一個線程接收視頻信息,同時在開啓一個線程進行視頻解碼操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章