国标GB28181协议EasyGBS视频平台TCP主动模式拉流异常情况修复
EasyGBS是基于国标GB28181协议的视频平台,可支持视频直播、录像、云存储、检索与回放、云台控制、告警上报、语音对讲等功能。EasyGBS平台功能全面、综合性强、视频能力灵活,能够涵盖所有视频监控领域的需求,已经在大量的项目中落地应用,如明厨亮灶、平安乡村、雪亮工程等。
EasyGBS平台可以设置三种拉流模式,UDP、TCP主动、TCP被动。
1)UDP:
服务端监听UDP端口,通过INVITE信令告知设备端口,设备主动向服务端发起流传输。
2)TCP被动:
服务端监听TCP端口,通过INVITE信令告知设备端口,设备向服务端发起流传输。
3)TCP主动:
设备端告知服务端监听的TCP端口情况,服务端主动向设备拉流,但是此种场景较少。
在某用户的项目中,EasyGBS作为上级平台,下级设备拉流设置为TCP被动,那么相对应上级EasyGBS要设置TCP主动模式拉流,但是在用户现场,则是一直拉流超时报错,于是我们对此情况进行了排查。查看主动模式拉流代码是否存在问题。
TCP主动模式中,EasyGBS需要向设备端发送INVITE消息,等待收流前发送SYN消息与下级建立连接,而现场则在发送SYN的时候,一直报端口占用(如下图)错误,于是我们分析是在发送SYN之前,程序已经对本次的拉流端口进行监听了。
查看代码发现,在拉流的时候,判断主动模式未成功,进入了TCP被动模式中,所以一直无法使用TCP主动拉流,修改后如下图:
修改后,上述问题已经成功解决。
EasyGBS强大的视频能力既可以作为业务平台,也能作为视频能力平台进行调用。通过GB28181标准协议实现平台之间的级联,可实现与其他平台系统的数据共享共用,在应用场景中达到视频资源汇聚、协同监督、平台联动等目的,感兴趣的用户可以前往演示平台进行体验或部署测试。