菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
430
0

视频智能分析平台国标GB28181协议国标流媒体服务器EasyGBS级联多个平台无法播放问题修复

原创
05/13 14:22
阅读数 70136

国标GB28181相对于国际上的安防协议标如ONVIF最大的优势是实现了平台级联方式,级联方式为中国政府机关和平安城市、智慧城市等概要非常贴切的应用,平台之间的级联实现了不同平台之间的互联互通,实现了有效的视频资源整合。

很多用户都会选择TSINGSEE青犀视频开发的国标平台EasyGBS作为能力层搭建视频平台,其中级联功能就使用非常频繁,EasyGBS不仅可以和其他第三方平台进行对接,也可以和TISNGSEE青犀视频其他云边端架构平台级联。

在EasyGBS的级联使用中出现一个问题,即同一个通道向上级级联多个平台时,无法在两个平台播放。正常来说,级联可以让多个平台同时获取到被级联平台的能力,因此该问题我们需要进行排查解决。

经过排查代码发现,同一个通道在配置推流的级联选项上是单节点推送的,所以导致无法在两个平台播放。

	case "UDP":
				cascade_udp, err := net.ResolveUDPAddr("udp", server.Cascade)
				if err != nil {
					fmt.Println("转发地址解析失败:", err)
					return
				}
				_, err = server.DataConn.WriteToUDP(rtpBuf, cascade_udp)
				if err != nil {
					fmt.Println("转发失败:", err)
				}
				if !server.IsLiveStream {
					continue
				}
			}

现在我们需要对代码进行修改,将每个设备的向上级推流的字段改成结构体模式,然后推送流数据的时候进行循环推送.

for _, v := range server.CascadeServer {
			cascade_udp, err := net.ResolveUDPAddr("udp", v.UDPAddr)
			if err != nil {
				fmt.Println("转发地址解析失败:", err)
				return
			}
			_, err = server.DataConn.WriteToUDP(rtpBuf, cascade_udp)
			if err != nil {
				fmt.Println("转发失败:", err)
			}
			if !server.IsLiveStream {
				continue
			}
		}

再次播放测试即正常:

EasyGBS视频智能分析平台在交通、安防等场景下具备很好的适应性,而今年TSINGSEE青犀视频研发团队刚推出的国标推流平台EasyGBD让国标协议的视频推流变得更加便捷,关于EasyGBS和EasyGBD的使用,欢迎大家联系我们咨询了解。

发表评论

0/200
430 点赞
0 评论
收藏