RTSP/GB28181/Ehome协议安防视频云平台EasyCVR级联至国标平台EasyGBS视频自动停播问题排查过程

本文分析了EasyCVR作为协议融合视频平台在级联播放时遇到的断流问题,问题根源在于按需播放模式下下级平台需定时保活流。通过定时发送TouchStream命令实现流保活,确保级联不断流。解决方案提供了具体的保活代码示例。
摘要由CSDN通过智能技术生成

TSINGSEE青犀视频研发团队开发的新平台EasyCVR与以往的视频服务平台有所不同。以往的平台大多只能支持单一协议摄像头的接入,比如EasyNVR只支持RTSP协议,EasyGBS只支持国标GB28181协议,所以当一个项目场景中有多种不同协议的摄像头时,部署就会稍显复杂。

EasyCVR的开发正是为了解决这一问题,EasyCVR可以是个协议融合平台,能够同时接入RTSP协议及GB28181协议的设备,并且已经开发集成了海康SDK、Ehome协议等私有协议,目前其他的协议也在拓展当中,有兴趣的用户可以看一下我们的Ehome协议开发过程(Ehome协议调用流程介绍)。

EasyCVR架构图 2.5D.png

最近研发人员发现EasyCVR通道向上级平台级联后,开启按需播放,上级平台播放一段时间后会停止播放,这一问题在我们开发其他平台及联的时候都有遇到过,是个比较普遍的问题。

我们首先来复现一下问题:

  1. 将EasyCVR级联到EasyGBS中,并分配通道
  2. 在EasyGBS中播放级联上来的通道播放一段时间就会停止,过一会又开始播放。使用VLC播放,过一会就会自动停止。如果在EasyCVR中非按需,则能在GBS中持续播放

224.png

从现象中分析是下级平台EasyCVR按需播放,GB28181协议级联invite消息,需要下级平台一直推流,如果下级平台设置成按需的话,按需时间到会断流停止推流。

所以通过分析我们知道,要想平台不断流,下级平台就需要定时保活。我们可以按照以下代码保活视频流:

		//流保活
		ticker := time.NewTicker(15 * time.Second)
		go func() {
			defer func() {
				if err := recover(); err != nil {
					err_logger.Error(fmt.Sprintf("%s\n", err))
					err_logger.Error(fmt.Sprintln(string(debug.Stack())))
				}
			}()
			for {
				select {
				case <-ticker.C:
					stream.TouchStream(streamObj.ChannelID, "main")

					//_, err := uas.Server.TouchStream(stream.StreamID)
					//if err != nil {
					//	c.Client.dispatcher.Dispatch(fmt.Sprintf("Bye@%s", c.SipMsg.Req.User), stream.StreamID)
					//	return
					//}
					//log.Println("级联流保活", stream.StreamID)
				}
			}
		}()
		ch := make(chan bool)
		l := events.NewListener(fmt.Sprintf("Bye@%s", c.SipMsg.Req.User), func(i ...interface{}) bool {
			ticker.Stop()
			ch <- true
			log.Println("级联流被中断")
			return true
		})
		c.Client.dispatcher.AddListener(l)
		defer c.Client.dispatcher.RemoveListener(l)
		for {
			select {
			case <-ch:
				return
			}
		}

225.jpg

本文EasyCVR级联国标平台视频无法播放的原因分析到底就是一个保活的问题,实际上,EasyCVR的用途比其他视频平台更加广泛,如果大家有需求,欢迎联系我们了解详情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值