1. 程式人生 > 其它 >EasyCVR國標級聯上級顯示狀態異常情況如何處理?

EasyCVR國標級聯上級顯示狀態異常情況如何處理?

EasyCVR的級聯功能是將我們上面的通道通過國標標準的sip協議推送到上級去的一種方式,但是不同的上級平臺對接設定上都有各自的特點,我們在配置時,還需要根據不同平臺的屬性進行調整。

EasyCVR國標級聯上級時,出現級聯狀態異常的現象。針對該問題我們需要做調整,所以首先來抓包排查。註冊信令的抓包檔案如下所示:

從上我們可以看出Register訊息傳送to欄位出現了拼接錯誤,這個錯誤主要是上次提交點誤操作導致的,因此我們需要對此提交進行程式碼上的優化,優化後參考程式碼如下所示:

@@ -260,6 +260,7 @@ func (c *Client) ClientOnline(b bool) {
  //if strings.ToUpper(c.Transport.Protocol) == "UDP" {
  c.Cascade.Online = b
  db.SQLite.Model(c.Cascade).Where("id=?", c.Cascade.ID).Update("online", b)
  log.Printf("級聯狀態更新[%d], Online[%d]:", c.Cascade.ID, b)
  //} else {
  // if b {
  //   c.Cascade.Online = b
  @@ -367,7 +368,7 @@ func (c *Client) MakeRequest(method, to string, tag string, body string) (req *R
    localRealm = c.Cascade.Username[0:10]
  } //c.Client.Cascade.Username,localRealm,
  buf.WriteString(fmt.Sprintf("From: <sip:%s@%s>;tag=%s\r\n", c.Cascade.Username, localRealm, tag))
  buf.WriteString(fmt.Sprintf("To: <sip:%s@%s>;tag=%s\r\n", c.Cascade.Serial, c.Cascade.Realm))
  buf.WriteString(fmt.Sprintf("To: <sip:%s@%s>\r\n", c.Cascade.Serial, c.Cascade.Realm))
  buf.WriteString(fmt.Sprintf("Call-ID: %s\r\n", GenCallID()))
  c.cseq++
  buf.WriteString(fmt.Sprintf("CSeq: %d %s\r\n", c.cseq, strings.ToUpper(method)))

安防視訊雲服務平臺EasyCVR作為一套較為成熟穩定的視訊分發平臺,不需要對現有監控架構做調整,支援CDN推流,靈活適應原有架構;且按需靈活擴充套件、收縮資源,免去了外掛安裝、瀏覽器限定等條件,實現了無外掛、多平臺自由觀看回放。

此外,EasyCVR已經在擴充套件智慧分析等相關功能,其中人臉識別功能及人流量統計功能已經在部分專案中得到應用,不久後車流量統計、車牌識別等功能也會上線。如果大家還想了解更多或者進行實際的部署測試,歡迎直接下載。