gb28181协议是公安部的图像传输协议,GB28181平台多会投入到多级的公安网络中使用,而在复杂的网络使用中,会遇到一些坑,希望本文能够让应用与公安领域的朋友在多级级联的部署中少走弯路,在一例公安网的实施中,从外网到公安内网使用,总共有4级平台,通过4级RealGBS级联,公安内网可以访问外网平台接入的执法仪等采集设备的音视频流信息。如下网络拓扑图:
GB28181平台现场反馈偶尔出现拉不到流,目录偶尔无法同步等问题。通过抓包数据的分析,发现在防火墙和网闸中IP产生了变化。变化主要产生在外围进视频内网那一级。
对网络结构进行思考后,决定采用的TCP主动的模式,这样其实就是主动连下级的外网平台,而这个外网平台确实在网外,不受防火墙和网闸所影响。所以可以顺利的拉到音视频流进入视频网。
TCP主动的原理其实就是通过呼叫方连接被呼方打开的tcp端口,主动连接被呼叫方,然后被呼叫方向呼叫方通过协商的tcp端口发流的过程。实现的代码如下:
av::RtpProtocol protocol = av::kUdp;
RtpMedium medium = mediaSession->getRtpMedium();
if (!medium.setup.empty())
{
if (medium.setup == RtpMedium::active) //收到呼叫为tcp主动,则服务端被动去连设备
{
protocol = av::kTcpClient;
}
else if (medium.setup == RtpMedium::passive) //收到呼叫为tcp被动,则服务端主动让设备去连接
{
protocol = av::kTcpServer;
}
}
后来进行总结,GB28181-2016里添加的TCP主动这一模式其实在多级级联,特别是外网进隔离内网的场景中能启到很好的联通作用。
多媒体技术交流QQ群: 222955665
wechat(tel): 13971177602
web:www.founu.com