背景:本人最近有一項目要鏈接IP攝像頭,市場上兩大主流廠商爲海康與大華,SDK成熟,很容易就能鏈接並取流。鏈接好海康與大華後,由於公司也有本身的IPC,也須要把公司的IPC鏈接上。ide
經歷:拿到公司IPC SDK與demo後,就開始按海康大華的鏈接思路工做了。鏈接類寫好後,經測試,問題就來了:鏈接一直有問題,不是解碼庫拋異常,就是登陸得了但回調不了視頻流。很困惑....與庫開發人員聯繫,他們堅信庫沒問題,而我測試又一直有問題。最後沒辦法,寫了個demo證實問題的存在發給庫開發人員測試。函數
一天過去了,通過幾回交流,問題找到了,庫徹底沒問題,是個人調用方法錯了。Demo的調用方法是正確的,只是我沒仔細按照裏面的方法調用。測試
緣由:我按海康大華的思路進行編寫調用,而公司的IPC與它們有些不一樣,我沒仔細看就栽在這裏頭。spa
海康大華調用方法(以大華代碼爲例):調試
登陸成功獲得ID luserid_;視頻
使用PLAY_GetFreePort(&lplayport_)獲得播放器的播放端口lplayport_;blog
PLAY_SetDecCallBackEx(傳入lplayport_)設置播放器的回調函數,在此回調中獲得視頻流數據。開發
CLIENT_RealPlay(傳入luserid_)啓動預覽獲得預覽句柄lrealplay_;get
CLIENT_SetRealDataCallBackEx(傳入lrealplay_)設置回調函數回調函數
回調函數中調用PLAY_InputData(傳入lplayport_)把流數據壓入給播放器解碼。
公司IPC調用方法:
登陸成功獲得ID luserid_;
X_VideoOpen獲得播放端口lplayport_
X_SetVisibleDecCallBack(傳入lplayport_,本人錯傳爲lrealplay_)設置播放器的回調函數,在此回調中獲得視頻流數據。
NET_StartRealPlay(傳入luserid_)啓動預覽並設置回調函數,獲得預覽句柄lrealplay_;
回調函數中調用X_VideoInputData(傳入lplayport_,本人錯傳爲luserid_)把流數據壓入給播放器解碼。
寫完一看居然是同樣的,從頭至尾都是個人錯....
面壁去
結論:找不到出錯緣由,就一直認爲是庫有問題,不應;傳錯參數問題很難調試發現,麻煩;庫沒對傳入錯誤的參數提示出錯信息,而是直接異常或不工做,不友好。
做者:phata
出處:http://www.cnblogs.com/wqvbjhc/
本文版權歸做者和CSDN共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。