安防視訊上雲服務平臺EasyCVR同一通道向上級聯到多個平臺無法同時播放問題修復
阿新 • • 發佈:2020-10-23
在TSINGSEE青犀視訊雲邊端架構產品中,EasyGBS和EasyCVR都能通過GB28181協議和其他平臺進行級聯。在級聯情況下,如果遇到視訊流無法播放的問題,首先需要關注通道是否設定了按需播放,因為在按需播放下,上級平臺無法獲取到EasyCVR中該通道的視訊流。
今天我們要分享的案例比較奇特,在該案例中,EasyCVR同時接入了2個上級平臺,將某個通道同時分配給了這2個上級平臺,當在這2個上級平臺中同時播放該通道的時候,問題就出現了:A平臺可以播放該通道,B平臺無法播放該通道。
當我們嘗試交替替換這兩個視訊平臺時,發現只能在1個上級平臺中播放,無法在2個上級平臺中同時播放。
通過現象分析上級平臺能獲取到裝置和通道資訊,只是無法同時播放,上級平臺下發的invite 訊息,處理正常。但是當多個上級平臺都下發invite訊息時,下級平臺推流物件就一個,只推了一份資料到其中的一個上級平臺,導致其他上級平臺沒有流資料,無法播放。
我們可以通過如下程式碼,對視訊流地址進行解析:
strKey:=strings.Split(server.Cascade,",") for _,v:=range strKey{ if v != "" { cascade_udp, err := net.ResolveUDPAddr("udp", v) if err != nil { fmt.Println("轉發地址解析失敗:", err) return } _, err = server.DataConn.WriteToUDP(rtpBuf, cascade_udp) if err != nil { fmt.Println("轉發失敗:", err) } if !server.IsLiveStream { continue } } }
修改後視訊通道則可以正常播放了。隨後進行兩個平臺同時播放的測試,播放正常,則問題修復完畢。