神奇呀祟霍,第一次寫博客。以前都是用word總結(jié)下來放在本地或者放在我的網(wǎng)站里面盈包,但是我那個小網(wǎng)站沸呐,哈哈誰去看嘛?沒人看萬一我寫的有問題呢燥,那不是我就要一直錯下去垂谢?悄悄咪咪的把我的小網(wǎng)站放這兒:www.leon7.cn
之前由于項目需求,需要集成新版本的捍眩康威視解碼器SDK到項目中,舊版本的SDK無法滿足需求(舊版本已經(jīng)是元老級別的了)根暑。所以寫下這篇文章方便之后自己查看回顧力试,也希望可以幫助到其他的小伙伴,有什么錯誤的地方還希望能夠指出排嫌。
當(dāng)我們在使用一個產(chǎn)品的二次開發(fā)包的時候畸裳,我們首先得大致的翻閱一下產(chǎn)品手冊以及供應(yīng)商提供的開發(fā)手冊。知己知彼淳地,百戰(zhàn)不殆嘛怖糊。
項目需求:遠(yuǎn)程登錄,實時預(yù)覽颇象,云臺控制伍伤,抓拍,錄像遣钳。
SDK接入配置:
將demo項目中的jar包與armeabi包復(fù)制進(jìn)去lib文件夾下扰魂。接下來設(shè)置bulid.gradle文件,添加so包的路徑蕴茴、添加jar包依賴劝评。同樣別忘記了相關(guān)權(quán)限的添加(6.0之后的權(quán)限適配)。詳細(xì)步驟可以問度娘這個基本都是一樣的倦淀,我主要寫需求中我的解決蒋畜。
遠(yuǎn)程登錄:
首先我們得知道登錄的業(yè)務(wù)邏輯。下面這張圖就是我們使用IP登錄的流程圖撞叽。
由于項目沒有固定的公網(wǎng)IP姻成,所以利用路由器軟件花生殼做了一個域名解析來獲取浮動的公網(wǎng)IP地址插龄。前提條件是運(yùn)營商提供的不是私網(wǎng)(10,100開頭的這種IP地址就是一個私網(wǎng),這種需要用硬件花生殼才可以佣渴,具體方案可去花生殼官網(wǎng)了解)
實時預(yù)覽:
這里我們需要調(diào)用 NET_DVR_RealPlay_V40這個接口辫狼,單通道預(yù)覽需要注意,當(dāng)你在準(zhǔn)備預(yù)覽下一個通道視頻的時候辛润,先調(diào)一次NET_DVR_StopRealPlay這個接口膨处,必須要將當(dāng)前預(yù)覽的通道停止,否者會造成預(yù)覽失敗砂竖。
云臺控制:
這里只需要設(shè)置點(diǎn)擊事件就OK了真椿,每次點(diǎn)擊都去調(diào)一次接口NET_DVR_PTZControl_Other,將定義好的點(diǎn)擊的參數(shù)放進(jìn)去就OK了乎澄,這個問題不大突硝。
抓拍:
抓拍這里需要調(diào)用NET_DVR_CapturePictureBlock接口,這里我們需要注意置济,抓拍之后的照片是存在自己設(shè)定的路徑下解恰。也可以往系統(tǒng)相冊中存,但是經(jīng)測試華為和魅族的手機(jī)會在系統(tǒng)相冊展示浙于,但是vivo以及OPPO 手機(jī)展示失敗护盈,但是圖片存在。說明是調(diào)接口抓拍是成功的羞酗。我的解決辦法是腐宋,單獨(dú)將圖片存在根目錄下,然后通過廣播的形式通知圖庫進(jìn)行更新檀轨,最終出來的效果就是單獨(dú)有一個相冊展示抓拍的蹄片胸竞。
錄像:
錄像和抓拍很相似,只是接口不一樣参萄, NET_DVR_SaveRealData_V30:捕獲預(yù)覽數(shù)據(jù)并保存到指定文件中卫枝。
以上就是海康威視SDK應(yīng)用開發(fā)的大致讹挎。
接下來是遇到的一些坑
1:無法調(diào)用JNA方法
一開始我是按照禾甓埽康提供的demo進(jìn)行資源導(dǎo)入的,在導(dǎo)入的過程中淤袜,該添加的.so文件,jar文件都已正確添加了痒谴,jnilibs的資源引入也配置了,還是輸出沒辦法調(diào)用到JNA方法铡羡。然后嘗試將JNA文件按照demo里面的路徑重新修改积蔚,才實現(xiàn)了調(diào)用的。
總結(jié):JNA文件如果作為 源文件加到工程烦周,需要把包名修改為“package com.hcnetsdk.jna”(僅做參考)
2:關(guān)于移動偵測的問題
一開始有一個網(wǎng)絡(luò)槍機(jī)帶有移動偵測效果尽爆,這是設(shè)備默認(rèn)開啟的功能怎顾,所以在手機(jī)預(yù)覽的時候就有一些遮擋視線的情況,所以考慮將它去除漱贱。因為熟悉攝像頭的配置流程槐雾,我直接到它的后臺將這個功能關(guān)閉了。
后來又想我們項目主要服務(wù)的對象是農(nóng)民朋友幅狮,他們不知道怎么修改怎么辦募强。所以就考慮通過代碼去除這個功能。但是可恨的是撼缟悖康在接口文件里沒有單獨(dú)的關(guān)閉移動偵測的接口擎值,然后我就想用它的遠(yuǎn)程配置參數(shù)的接口來配置,也不包含這個功能逐抑。網(wǎng)上有個大佬是在PlaySurfaceView里面做的處理鸠儿。留一個傳送門。
3:順便說一個WEB開發(fā)的坑:
這是我們同事在做web開發(fā)的時候遇到的問題厕氨,項目上使用的是16路的錄像機(jī)进每,瀏覽器同時展示16個畫面會使電腦非常的卡,很吃CPU和內(nèi)存性能命斧,一般電腦都很難帶動品追。所以就咨詢海康的技術(shù)冯丙,得到的解決辦法是降低視頻的顯示分辨率。這樣做有個很難受的就是遭京,不管是實時預(yù)覽還是回放視頻都非常的模糊胃惜,有損用戶體驗感。這里不得不吐槽一下耗牡瘢康了船殉,預(yù)覽為什么一定要在IE模式下?就不能搞搞兼容斯嚎?