天天看點

視訊融合平台EasyCVR視訊流出現報錯該如何解決?

EasyCVR具備較強的視訊能力,可支援海量裝置接入、彙聚與管理、視訊監控、視訊錄像、雲存儲、回放與檢索、智能告警、平台級聯等功能。平台可支援多協定接入,包括:國标GB/T28181、RTMP、RTSP/Onvif協定,以及廠家的私有協定,如:海康Ehome、海康/大華/華為/宇視/螢石/樂橙SDK等,可覆寫市面上大多數的視訊源裝置。

視訊融合平台EasyCVR視訊流出現報錯該如何解決?

有使用者回報,在EasyCVR平台中內建裝置宇視sdk時,剛開始運作播放流就出現以下報錯:“fatal error: sync: RUnlock of unlocked RWMutex”。

視訊融合平台EasyCVR視訊流出現報錯該如何解決?

收到回報後,技術人員立即開展排查與解決:

1、從圖中的報錯資訊得知: 在source_unv_export.go的第13行代碼有錯誤,詳細如下:

視訊融合平台EasyCVR視訊流出現報錯該如何解決?

2、檢視“UNVStreamMapLocker和UNVStreamMap”的定義,如下圖:

視訊融合平台EasyCVR視訊流出現報錯該如何解決?

3、從圖中可以看出,寫法是沒有問題的,于是隻能修改代碼:

視訊融合平台EasyCVR視訊流出現報錯該如何解決?

4、修改代碼後,運作程式是正常的,于是根據以下操作即可解決問題:

從排查得出,原來的代碼為:​

​UNVStreamMapLocker.RLocker()​

​,修改的代碼為:​

​UNVStreamMapLocker.RLock()​

​。

而其中函數多出來“er”,在讀鎖的時候沒有進行鎖,是以在釋放鎖的時候出現了報錯。