背景介绍
为了解决平台之间互通问题, 比如A平台大连交警系统需要看B 平台: 上海交警系统视频, 需要对接过来, 实现调度视频. 这时需要知道他们取流协议; 国家就因此制定了这个GB28181国标实现A与B平台相互取流,是一个应用层协议,不是基础的通信协议; GB28181协议信令层面使用的SIP协议,
概念
通信流程图
SIP服务器和媒体服务器可以是同一个设备;在GB28181协议中, 联网系统在进行音视频传输及控制时应建立两个传输通道, 会话通道和媒体流通道; 会话通道用于在设备之间建立会话并传输系统控制命令; 媒体通道用于传输音视频数据;
会话通道中, 注册, 实时音视频点播等应用的会话控制采用SIP协议中的REGISTER,INVITE等请求和响应方法实现;
平台上下级
A平台想从B平台取流, A平台就是上级,B平台就是下级, 视频流从下级推到上级;
推拉模式
拉: 播放器通过地址拉流进行播放;
推: 流媒体想要取流, 通过SIP协议告诉IPC设备端, 要往哪个ip port上进行推流.IPC设备端就会一直往对应的ip port上发视频流;
规范设计内容
常见的GB28181报文详解
-
注册;
-
注销
-
心跳
-
INVITE
-
云台控制(PTZ)
名次解释
我们可以看到28181设备是通过sip协议进行通信的, 所以简单了解一下sip协议
SIP 三部分组成: 请求行(request-line) 状态行(status-line); 消息头(header) 正文(body)
Method 方法说明 REGISTER 注册消息 INVITE 发起会话请求 ACK INVITE请求的响应的确认 CNACEL 取消请求 BYE 终止会话 MESSAGE 心跳等可参考: https://tools.ietf.org/html/rfc3428 Register
Header关键字段
Request-URI 请求的用户或者服务地址信息; sip[s]:username@domain:port; 用户名username应保证在同一个SIP监控域内具有唯一性; domain 宜采用ID统一编码的前十位编码;
Via: SIP/2.0/UDP 使用的是2.0版本的sip协议, 使用的传输协议是UDP;branch是事务id,rport表示使用rport机制路由响应,服务器插入request中, 使response根据via找到返回的路; request路径中的每个proxy, 在收到消息的时候, 会在消息Via字段顶部加上当前proxy地址和端口; 当处理response,return路径上每个Proxy会倒过来处理Via字段, 并且从Via字段的顶部以此去掉当前proxy地址和端口;
Max-Forwards: 包最多可以传送多少跳; 默认70
From:sip:源设备编码@源域名;tag=585b7512 发起者
To: 接受者;
Call-ID 本地设备生成, 全局唯一, 每次呼叫这个值唯一不变
Content-Length:消息实体的字节长度
流程描述
(a) SIP代理向SIP服务器发送Register请求;
(b) SIP服务器向SIP代理发送响应401,并在响应的消息头WWW_Authenticate字段中给出适合SIP代理的认证体制和参数;
© SIP代理重新向SIP服务器发送REGISTER请求, 在请求的Authorization字段给出信任书,包含认证信息;
(d) SIP服务器对请求进行验证,如果检查出SIP代理身份合法,向SIP代理发送成功响应200OK,如果身份不合法则发送拒绝服务应答。
MESSAGE
通过周期性的状态信息报送,实现注册服务器与源设备之间的状态检测即心跳机制。心跳发送方、接收方需统一配置“心跳间隔”参数,按照“心跳间隔”定时发送心跳消息,默认心跳间隔60秒。心跳发送方、接收方需统一配置“心跳超时次数”参数,心跳消息连续超时达到“心跳超时次数”则认为对方下线,默认心跳超时次数3次。心跳接收方在心跳发送方上线状态下检测到心跳消息连续超时达到商定次数则认为心跳发送方离线;心跳发送方在心跳接收方上线状态下检测到心跳消息响应消息连续超时达到商定次数则认为心跳接收方离线。
内容范例如下:
Header关键字段
Content-type 为消息体类型: Application/MANSCDP+xml 状态信息报送命令使用的MANSCDP协议格式定义;
状态信息报送命令包括:
CmdType: 命令类型;
SN: 命令序列号
DeviceId: 设备编码
Status: 正常工作状态
Message消息的成功或者错误应答, 都无消息体, 如下:
INVITE
Owner/Creator invite发起者相关信息, 后面内容依次为设备国标id;sessionID; session版本; 网络类型(IN/OUT);
地址类型IPV4/IPV6 ; 发起者IP ;
Session Name: GB28181协议中规定实时点播必须填"Play"
Connection Information: 连接数据, 后面内容依次是网络类型(IN/OUT)、地址类型(IPV4/IPV6)、发起者IP。
Time Description,active time 表示起始时间和终止时间,由于是实时点播,没有起始时间和终止时间,因此均为0.
Media : 媒体流参数, m描述的是媒体类型, 媒体端口, 传输层协议,负载类型;"video"标识传输视频或视音频混合内容;“TCP/RTP/AVP”标识传输层协议为RTP over TCP; 传输端口是20036, 负载类型是96.
Media Attribute 媒体相关参数, 启用IETF RFC 4566中对a字段的定义a=rtpmap: / [/]中的, 利用该属性携带编码器厂商名称(如:企业1或企业2编码名称DAHUA或HIKVISION)。该属性表明该流为某厂商编码器编码且是不符合本标准规定的媒体流, 符合本标准规定的媒体流无需该属性。recvonly表示仅接收媒体流,sendonly表示仅发送。
Unknown: y 表示SSRC, 可以在端口复用模式情况下区分不同路的媒体流,SSRC值全局唯一,用户可以自定义。
通过Bye结束invite请求, bye消息不仅仅要求call-id和invite消息相同, 还要求tag信息正确;
辅助资料
公共安全视频监控联网系统 信息传输, 交换 控制技术要求文章来源:https://www.toymoban.com/news/detail-438341.html
http://www.gb688.cn/bzgk/gb/newGbInfo?hcno=C9C488FD717AFDCD52157F41C3302C6D文章来源地址https://www.toymoban.com/news/detail-438341.html
到了这里,关于国标GB28181的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!