国标GB28181协议视频智能分析平台国标平台EasyGBS接入设备后重复发送语音对讲消息无响应问题分析

在早前的版本更新中,EasyGBS已经支持了语音对讲的功能,不管是发送一段语音,还是实时进行语音讲话,EasyGBS都能很好的运行。

98.png

但是近期发现通过EasyGBS和设备在进行语音对讲过程中,第一次对讲可以正常进行,再次发送对讲消息的时候设备则没有响应了。进过抓包分析对讲流程发现,第二次对讲之后,设备不会回复对讲消息,需等设备回复关闭对讲通道后,才能够再次发送对讲消息。

41.png

42.png

因此此处为了加强语音体验的使用感,我们需要对代码进行修改,当和通道建立一次连接过后,超时十秒没收到语音消息,才会再次向设备发送语音喊话请求

if !Server.Talk {
		sipDev := Server.GetDevice(deviceId)
		if sipDev == nil {
			err = fmt.Errorf("[talk] device[%s] not found", deviceId)
			return
		}
		reqBroadcast, _, err := Server.MakeTalkRequest(deviceId, Server.Realm, channelId)
		err = reqBroadcast.SendByTransport(sipDev.Transport)
		if err != nil {
			return err
		}
		_, err = Server.WaitAck(reqBroadcast.HeaderMap["Call-ID"], reqBroadcast.HeaderMap["CSeq"])
		if err != nil {
			return err
		}
		go func() {
			key := fmt.Sprintf(`%s:`, deviceId)
			var talkChan = make(chan string)

			Server.TalkChanDataLock.RLock()
			Server.TalkChanData[key] = talkChan
			Server.TalkChanDataLock.RUnlock()
			Server.TalkChanData[key] <- talkData
			return
		}()

	}

再次发送两次语音请求测试,抓包查看数据都显示正常,则该问题优化完毕。

43.png

✈ 更多视频解决方案资源汇总

  • 流媒体技术:

© EasyDarwin开源流媒体服务器:http://www.easydarwin.org

© TSINGSEE视频开放平台:http://open.tsingsee.com

  • 视频云服务:

© EasyDSS互联网视频云服务:http://www.easydss.com

© EasyCVR安防视频云服务:http://www.easycvr.com

© EasyGBS国标视频云服务:http://www.easygbs.com

© EasyRTC在线视频会议平台:http://www.easyrtc.cn

© EasyRTS即时通信云服务:http://www.easyrts.com

  • 边缘计算:

© EasyNVR视频边缘计算网关:http://www.easynvr.com

© EasyNTS上云网关:http://www.easynts.com

© TSINGSEE Team:http://www.tsingsee.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值