1. 程式人生 > 實用技巧 >安防視訊上雲服務平臺EasyCVR同一通道向上級聯到多個平臺無法同時播放問題修復

安防視訊上雲服務平臺EasyCVR同一通道向上級聯到多個平臺無法同時播放問題修復

在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
		}
	}
}

修改後視訊通道則可以正常播放了。隨後進行兩個平臺同時播放的測試,播放正常,則問題修復完畢。