作为支持国标GB28181协议的视频平台,EasyGBS经常被拿来用作下级平台或者上级平台于客户现场的第三方平台进行级联,稳定性高、扩展性强也是EasyGBS级联过程中一个显著的特点。
当EasyGBS作为上级平台时,接入下级平台后,假如下级平台有两个相似ID的通道接入,那么在播放这两个通道的时候会出现两个通道串流的问题。比如下图,为两个相似ID的不同通道,但是播放的时候却都是播放了同一个画面。
通过排查代码发现是本地推流地址规则,在两个摄像头ID相近的时候,推流地址是相同的,这一点我们需要继续做优化。我们修改代码如下,将推流地址修改为设备id 通道id 十位固定数据的方式。参考代码如下:
代码语言:javascript复制func (server *MediaServer) GetWSFLV_URL(app, devid, channelid, senderID string) string {
return fmt.Sprintf("ws://%s:%d/ws_flv/%s/%s_%s_%s.flv", server.StreamUrlIP, server.HTTPPort, app, devid, channelid, senderID)
}
func (server *MediaServer) GetWSSFLV_URL(app, devid, channelid, senderID string) string {
return fmt.Sprintf("wss://%s:%d/ws_flv/%s/%s_%s_%s.flv", server.StreamUrlIP, server.HTTPSPort, app, devid, channelid, senderID)
}
func (server *MediaServer) GetHTTPS_FLV_URL(app, devid, channelid, senderID string) string {
return fmt.Sprintf("https://%s:%d/flv/%s/%s_%s_%s.flv", server.StreamUrlIP, server.HTTPSPort, app, devid, channelid, senderID)
}
再次分别播放两个通道视频,发现播放通道已经纠正,没有串流现象: