在EasyGBS国标平台之前的版本中,添加了udp海康模式的对讲,该对讲功能让很多项目都实现了远程语音喊话,但是我们近期在某个客户现场遇到了一个设备无法对讲的问题,通过抓包排查发现对讲是tcp模式的。
由于我们碰到的tcp模式对讲需求并不多,因此这块一直没有得到完善处理。这次刚好趁这个机会,对语音对讲的模式进行拓展优化,增加tcp模式的对讲功能。
实现tcp模式对讲与udp模式对讲的差别并不大,只需添加一层tcp协议代码,代码参考如下:
代码语言:javascript复制tcpPortMin, tcpPortMax := 35000, 40000
tcpPortSlice := strings.Split(conf.GetIniConf().RtpTcpPortRange, ",")
if len(tcpPortSlice) >= 2 {
if _tcpPortMin, err := strconv.Atoi(tcpPortSlice[0]); err == nil && _tcpPortMin > 0 {
if _tcpPortMax, err := strconv.Atoi(tcpPortSlice[1]); err == nil && _tcpPortMax > 0 {
if _tcpPortMin <= _tcpPortMax {
tcpPortMin = _tcpPortMin
tcpPortMax = _tcpPortMax
}
}
}
}
start := tcpPortMin
lastTCPPort := rtps.GetLastTCPPort()
if lastTCPPort > 0 {
start = int(lastTCPPort 1)
}
再次通过EasyGBS平台向设备喊话,已经能够正常发送音频信息。
目前的EasyGBS版本即是同时支持udp和tcp模式语音对讲的版本,大家可以自由下载部署及进行功能测试。