視訊融合平台EasyCVR可支援多類型裝置、多協定方式接入,包括主流标準協定國标GB/T28181、RTMP、RTSP/Onvif協定等,以及廠家私有協定,如海康SDK、大華SDK、海康Ehome等。平台可将接入的流媒體進行處理及分發,分發的視訊格式包括RTSP、RTMP、FLV、HLS、WebRTC等。
今天和大家分享一下我們在對接大華SDK時,添加預置位出現崩潰現象的原因分析及解決方法。
将裝置通過大華SDK接入到EasyCVR視訊融合平台,在添加大華預置位時,出現了程式崩潰現象。登入大華錄影機背景發現,預置位已經設定成功,沒有進行預置點标題修改。如下圖,大華裝置的背景預置點顯示設定成功:
原因分析及排查:
1)首先檢視EasyCVR的代碼。先添加預置位,再進行預置位名稱修改,如下所示:
這時發現,添加預置位沒有問題,問題出在設定預置點的名稱上。
2)進入c++代碼進行調試。在調試中發現,将添加預置點和修改預置點按照EasyCVR代碼中的設定,當修改預置點名稱時會出現崩潰。如下圖:
3)在崩潰之前列印斷點調試。将解析的預置點名稱的位元組數,放到記憶體中檢視,記憶體資料如下:
4)在記憶體資料中發現是一個json資料,但是table這個字段數組中,其中數組中有null這個值,是以在解析時會出現程式崩潰現象。