折騰了一個多月,終於調出來了。。。。。首先吐槽一下海康SDK,同時也感謝之。。。
手頭有個項目,需要實時抓取海康攝像頭,我是在Android下實現的,海康官網上沒有Android SDK,這里友情提醒一下,大家在官網上給海康一個電話就搞定了的。。。我手頭有,但既然海康不放網頁上,要讓自己索取,那我也就不亂上傳了,尊重海康 吧。。。反正一個400 ,約2個小時就由到郵件了的。。。
收到SDK后,里面有個Demo,我直接運行Demo是沒有問題的,可以在Android下實時預覽攝像頭,但我需要把實時畫面抓取下來傳給 OpenCV庫,進行后期的圖像分析,提供的SDK里面有抓取Bmp、JPEG函數,但是確實如網友說的有延遲,得用方法二(下面附了相關網址,大家詳細 可以自己看,我也是參考了它的):http://blog.csdn.net/wanghuiqi2008/article/details/31404571; 思路是在RealPlayCallBack中設置DecodeCB解碼回調函數,然后在DecodeCB解碼回調函數中進行抓圖處理,比如把圖像數據保存 到二進制文件中,然后就可以播放了。。。這里Decode得到的圖像是YV12數據,我的需求是把它轉換成RGB,反正都好辦了。。。。DecodeCB 函數的說明大家可以看看:
根據上面的說明,很簡單了。。。。。但是、但是、但是……坑爹的事來了,我折騰了一個月,總以為自己的程序出錯,反復檢查DecodeCB回調的第 二個參數“byte[] data“這個圖像數組有幾十萬個元素,但每個元素都是0……也就是說回調里面實際上是沒有數據的。。。。
而同時,海康的SDK說明又太”簡扼明要“,百度、Google也找不到相關說法,最后我只有給海康SDK發郵件咨詢了(就是直接回復給發SDK給 我那個郵箱)。報着嘗試的心理(因為有加了幾個海康開發群,都說電話不接、郵件不回),居然很快就回復了,經過多次溝通,他給我發了兩次SDK更新文件 (要替換so文件)。歷經千辛萬苦,終於有數據了,然后我無論是Save成YUV文件、轉碼成RGB都OK了。。。
所以一開始我說,吐槽海康,M的提供個SDK居然不測試么?但是SDK_Support這郵箱還是回復很神速的,所以我也很感謝之。。。
最后可能會有朋友想跟我要SDK開發包,我還是不傳了,我也不知海康為何不直接在網站上提供Android的SDK,大家就麻煩一下,去個電話吧,只是會讓你報一個單位名稱,很簡單的。