EasyGBS通过GB2818下载流程结合抓包数据详细记录
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,整个下载流程结束。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结