GB28181国标协议解决了平台与平台的对接问题,主要是基于SIP信令来进行信息的交互。为了紧跟国家的步伐,我们在早期研发了EasyGBS平台,可支持国标协议的所有能力。本文我们对国标GB28181协议下载流程做个说明,同时也对抓包进行一个简单的模拟。
下载流程命令
一、首先上级域平台通过发送 INVITE 告诉下级域平台它需要下载的录像的时间段、接收录像的地址和端口等信息;
二、下级平台收到 INVITE 之后,会先回复 100 Trying,然后再回复 200 OK,告诉上级域发送录像的地址和端口等信息;
三、上级域收到 200 OK 后,会通过 ACK 信令告诉下级域“我准备好了,可以开始发流了”,然后下级域就开始了发流过程;
四、在上级域下载录像的时候,上级域会发送 INFO 信令告诉下级域它下载的录像速率;
五、下级域收到上级域发送的 INFO 之后,会根据上级域的要求回复 200 OK;
六、在录像下载完成的时候,下级域会发送MESSAGE消息告诉上级域录像“已经发送完了,可以结束了”;
七、上级域收到 MESSAGE 信令后,先回复 200 OK 表示“知道了”,然后再发送 BYE 消息告诉下级域“我断开连接了”;
八、下级域收到上级域的 BYE 消息之后,也会回复 200 OK 表示“知道了”,至此下载结束。
抓包示例:
上级域(172.1.0.16) 下级域(172.1.0.22)
下级域回复的 200 OK 中携带了媒体流发送地址和发送端口,y 字段(SSRC 值需要和请求时的 SSRC 值一样)
录像下载开始之后,上级域会做一些操作,发送的 INFO 消息里面会携带一些字段,如下图所示为四倍速下载:
录像下载完之后,下级域会发送 MESSAGE 信令告诉上级域历史媒体流发送完了,可以结束播放了。MESSAGE 字段里面 Mediastatus 字段表示媒体通知消息,DeviceID 表示媒体流发送设备的 ID(此处是相机 ID),NotifyType 表示通知的事件类型,参数为 121 代表历史媒体文件发送结束,即发流结束。随后上级域发送 BYE,整个下载流程结束。