欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

安防视频上云服务平台EasyCVR同一通道向上级联到多个平台无法同时播放问题修复

程序员文章站 2022-06-26 18:16:22
在TSINGSEE青犀视频云边端架构产品中,EasyGBS和EasyCVR都能通过GB28181协议和其他平台进行级联。在级联情况下,如果遇到视频流无法播放的问题,首先需要关注通道是否设置了按需播放,因为在按需播放下,上级平台无法获取到EasyCVR中该通道的视频流。今天我们要分享的案例比较奇特,在该案例中,EasyCVR同时接入了2个上级平台,将某个通道同时分配给了这2个上级平台,当在这2个上级平台中同时播放该通道的时候,问题就出现了:A平台可以播放该通道,B平台无法播放该通道。当我们尝试交替...

在TSINGSEE青犀视频云边端架构产品中,EasyGBS和EasyCVR都能通过GB28181协议和其他平台进行级联。在级联情况下,如果遇到视频流无法播放的问题,首先需要关注通道是否设置了按需播放,因为在按需播放下,上级平台无法获取到EasyCVR中该通道的视频流。

今天我们要分享的案例比较奇特,在该案例中,EasyCVR同时接入了2个上级平台,将某个通道同时分配给了这2个上级平台,当在这2个上级平台中同时播放该通道的时候,问题就出现了:A平台可以播放该通道,B平台无法播放该通道。

安防视频上云服务平台EasyCVR同一通道向上级联到多个平台无法同时播放问题修复

当我们尝试交替替换这两个视频平台时,发现只能在1个上级平台中播放,无法在2个上级平台中同时播放。

安防视频上云服务平台EasyCVR同一通道向上级联到多个平台无法同时播放问题修复

通过现象分析上级平台能获取到设备和通道信息,只是无法同时播放,上级平台下发的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
		}
	}
}

修改后视频通道则可以正常播放了。随后进行两个平台同时播放的测试,播放正常,则问题修复完毕。

安防视频上云服务平台EasyCVR同一通道向上级联到多个平台无法同时播放问题修复

本文地址:https://blog.csdn.net/EasyNVS/article/details/109245447