GB/T28181流媒体相关协议简介绍

目录

1:GB/T28181协议中使用的应用层协议介绍:

2:GB28181协议交互流程

3:设备注册到国标平台:

4:设备保活维持心跳

5:28181播放环节流程图大致如下:

6:媒体流传输


1:GB/T28181协议中使用的应用层协议介绍

协议规范涉及SIP、SDP、RTP、RTCP、RTSP等应用层协议。其他协议会单独列篇

SIP+XML用于消息交互,SIP+SDP用于视频会话,RTP/RTCP用于媒体流传输控制,RTSP一般可用于录像回放,也可用于实时视频查看。

28181协议中 SIP+XML用于消息查找设备和返回设备信息 交互示例:

发送设备目录查询(服务器->设备)

MESSAGE sip:34020000001320000264@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.135:5060;rport;branch=z9hG4bK364291932
From: <sip:34020000002000000001@3402000000>;tag=204291932
To: <sip:34020000001320000264@3402000000>
Call-ID: 955291932
CSeq: 14 MESSAGE
Max-Forwards: 70
User-Agent: LiveQing
Content-Length: 161
Content-Type: Application/MANSCDP+xml

<?xml version="1.0" encoding="UTF-8"?>
<Query>
    <CmdType>Catalog</CmdType>
    <SN>55291932</SN>
    <DeviceID>34020000001320000264</DeviceID>
</Query>

返回设备信息 设备-》服务器

MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.64:5060;rport=5060;received=192.168.2.64;branch=z9hG4bK74939292
From: <sip:34020000001320000264@3402000000>;tag=6586670
To: <sip:34020000002000000001@3402000000>
Call-ID: 1535161485
CSeq: 20 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: IP Camera
Content-Length: 587

<?xml version="1.0" encoding="UTF-8"?>
<Response>
<CmdType>Catalog</CmdType>
<SN>55291932</SN>
<DeviceID>34020000001320000264</DeviceID>
<SumNum>1</SumNum>
<DeviceList Num="1">
<Item>
<DeviceID>34020000001320000264</DeviceID>
<Name>TSET</Name>
<Manufacturer>Hikvision</Manufacturer>
<Model>IP Camera</Model>
<Owner>Owner</Owner>
<CivilCode>CivilCode</CivilCode>
<Address>Address</Address>
<Parental>0</Parental>
<ParentID>34020000001320000264</ParentID>
<SafetyWay>0</SafetyWay>
<RegisterWay>1</RegisterWay>
<Secrecy>0</Secrecy>
<Status>ON</Status>
</Item>
</DeviceList>
</Response>

MESSAGE: SIP请求方法,表示设备正在发送一个消息给指定的接收方。

Via: SIP消息经过的路由,包含协议版本、传输协议、源IP地址和端口号等。这里的branch参数是用于唯一标识这个请求的分支标识符。

From: 发起方信息,包括用户URI和标签。标签用于唯一标识请求,这个标签与接收方的响应中的标签相对应。

To: 接收方信息,与From字段类似,但通常不包含标签。

Call-ID: 呼叫ID,用于唯一标识一次通话。这个ID应该在一次通话中是唯一的。

CSeq: 命令序列号,用于标识请求的序列。这里的值为20,表示这是第20个MESSAGE请求。

Content-Type: 消息体的类型,这里是Application/MANSCDP+xml,表示消息体是一个XML文档,内容符合MANSCDP的格式。

Max-Forwards: 最大转发次数,用于防止消息在网络中无限循环。

User-Agent: 设备使用的用户代理,通常指示设备的类型和版本号。

Content-Length: 消息体的长度,这里是587,表示消息体的长度为587个字节。

消息体: 包含了具体的消息内容,这里是一个XML文档,表示设备发送了一个响应消息。XML文档中包含了命令类型(CmdType)、序列号(SN)和设备ID(DeviceID)等信息,以及一个设备列表(DeviceList),其中包含了一个设备条目(Item),包括设备ID、名称、厂商、型号等详细信息。

这些字段共同构成了SIP MESSAGE请求,用于设备向另一个设备或服务发送消息,这里的消息内容是一个XML格式的响应消息,用于回复查询设备目录的请求。

2:GB28181协议交互流程

交互主要有以下几个环节:

1.设备注册到国标平台:视频终端IPC设备需要注册到国标平台(例如:EasyGBS),国标平台要找到查询设备id信息(参考上面的xml交互示例),后根据设备摄像头id去发起视频会话

2.设备保活维持心跳:设备端定时向国标平台发送保活信息,否则会被平台认为掉线

3.视频播放:通过SIP协议,INVITE 请求建立通话播放音视频

3:设备注册到国标平台:

3.1:

示例:

REGISTER sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 10.45.12.141:5060;rport;branch=z9hG4bK873415819
From: <sip:34020000001110000002@3402000000>;tag=292191181
To: <sip:34020000001110000002@3402000000>
Call-ID: 924327262
CSeq: 1 REGISTER
Contact: <sip:34020000001110000002@10.45.12.141:5060>
Max-Forwards: 70
User-Agent: IP Camera
Expires: 3600
Content-Length: 0

REGISTER: SIP请求方法,表示设备正在注册到SIP服务器。

Via: SIP消息经过的路由,包含协议版本、传输协议、源IP地址和端口号等信息。

From: 发起方信息,包括用户名、域名和标签等信息。标签用于唯一标识请求,可以由设备生成。

To: 接收方信息,与From字段类似,但通常不包含标签。

Call-ID: 呼叫ID,用于唯一标识一次通话。

CSeq: 命令序列号,用于标识请求的序列。这里的值为1,表示这是第一个REGISTER请求。

Contact: 包含设备的联系信息,包括用户名、域名和IP地址等。这个信息用于告诉服务器设备的位置。

Max-Forwards: 最大转发次数,用于防止消息在网络中无限循环。

User-Agent: 设备使用的用户代理,通常指示设备的类型和版本号。

Expires: 注册的有效期限,以秒为单位。这里的值为3600秒,表示注册信息在3600秒后过期。

这些字段共同构成了SIP注册请求,用于设备向SIP服务器注册自身信息,以便后续能够进行通信。

3.2:

第一次注册后会认证失败,这时响应式内容会多个认证参数 :WWW-Authenticate头,指示认证方式和参数。也就是为digest认证信息。 例如:

SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 10.45.12.141:5060;rport=5060;received=10.45.12.141;branch=z9hG4bK873415819
From: <sip:34020000001110000002@3402000000>;tag=292191181
To: <sip:34020000001110000002@3402000000>;tag=53631846
CSeq: 1 REGISTER
Call-ID: 924327262
User-Agent: EasyGBS v200511
Content-Length: 0
Contact: <sip:34020000002000000001@10.45.12.83:5061>
WWW-Authenticate: Digest realm="3402000000",nonce="29eb6d344c29a70a0997d173e937e693"

其他字段意思看上文

WWW-Authenticate: 身份验证挑战信息,包含了服务器要求客户端提供的身份验证信息的详细信息,包括领域(realm)和随机数(nonce)等。客户端需要使用这些信息来生成身份验证响应。

3.3 带有REGISTER信息再去注册一次。示例如下:

REGISTER sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 10.45.12.141:5060;rport;branch=z9hG4bK864745657
From: <sip:34020000001110000002@3402000000>;tag=292191181
To: <sip:34020000001110000002@3402000000>
Call-ID: 924327262
CSeq: 2 REGISTER
Contact: <sip:34020000001110000002@10.45.12.141:5060>
Authorization: Digest username="34020000001110000002", realm="3402000000", nonce="29eb6d344c29a70a0997d173e937e693", uri="sip:34020000002000000001@3402000000", response="42b636f290984b1d796907c882e4d5a8", algorithm=MD5
Max-Forwards: 70
User-Agent: IP Camera
Expires: 3600
Content-Length: 0

字段意思看上文

4:设备保活维持心跳
MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 10.45.12.141:5060;rport;branch=z9hG4bK999920179
From: <sip:34020000001110000002@3402000000>;tag=1336295153
To: <sip:34020000002000000001@3402000000>
Call-ID: 1577903431
CSeq: 20 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: IP Camera
Content-Length: 164

<?xml version="1.0" encoding="GB2312"?>
<Notify>
  <CmdType>Keepalive</CmdType>
  <SN>1822</SN>
  <DeviceID>34020000001110000002</DeviceID>
  <Status>OK</Status>
</Notify>

MESSAGE消息头中Content-type头为Content-type: Application/MANSCDP+xml,表示保活信息报送命令采用MANSCDP(监控报警联网系统控制描述协议,Monitoringand Alarming Network System Control Description Protocol)协议格式定义,消息体详细解释见GB/T28181-2022 A.2.5通知命令-状态信息报送部分,

xml中Notify元素表示此消息是通知命令

xml中CmdType表示命令类型,这里为Keepalive

xml中的SN表示序列号

xml中的DeviceID表示设备ID

xml中的Status表示设备状态,这里为OK

4.2:保活服务器相应消息如下:

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.45.12.141:5060;rport=5060;received=10.45.12.141;branch=z9hG4bK999920179
From: <sip:34020000001110000002@3402000000>;tag=1336295153
To: <sip:34020000002000000001@3402000000>;tag=698636847
CSeq: 20 MESSAGE
Call-ID: 1577903431
User-Agent: Easy SIP Server
Content-Length: 0

除了MANSCDP协议格式,GB/T28181-2022标准还支持其他的协议格式,具体取决于设备之间的通信需求和约定。以下是一些可能的替代协议格式的示例:

1:PSIA-Event: PSIA(Physical Security Interoperability Alliance)事件格式
是另一个常用的事件报告协议。
它定义了一种用于安全设备之间通信的XML格式。示例消息可能如下:


Content-Type: application/psia-event+xml

<?xml version="1.0" encoding="UTF-8"?>
<Event>
  <EventType>Alarm</EventType>
  <EventID>1234</EventID>
  <DeviceID>34020000002000000001</DeviceID>
  <Time>2022-04-08T10:00:00</Time>
  <Description>Fire alarm detected</Description>
</Event>






2:ONVIF-Event: ONVIF(Open Network Video Interface Forum)事件格式
是一种用于视频监控设备之间通信的标准化协议。
它定义了一种XML格式来描述设备状态和事件。示例消息可能如下:


Content-Type: application/onvif-event+xml

<?xml version="1.0" encoding="UTF-8"?>
<NotificationMessage>
  <Topic>Alarm</Topic>
  <MessageID>1234</MessageID>
  <ProducerReference>34020000002000000001</ProducerReference>
  <Message>
    <Alarm>
      <Time>2022-04-08T10:00:00</Time>
      <Description>Fire alarm detected</Description>
    </Alarm>
  </Message>
</NotificationMessage>

5:28181播放环节流程图大致如下:

5.1 SDP 邀请示例:

INVITE sip:34020000001320000002@10.45.12.141:5060;transport=udp SIP/2.0
Via: SIP/2.0/UDP 10.45.12.83:5061;rport=5061;branch=z9hG4bK735682946
From: <sip:34020000002000000001@3402000000>;tag=671682946
To: <sip:34020000001320000002@10.45.12.141:5060>
Call-ID: 787682407
CSeq: 3 INVITE
Max-Forwards: 70
User-Agent: Easy SIP Server
Content-Length: 218
Content-Type: application/sdp
Contact: <sip:34020000002000000001@10.45.12.83:5061>
Subject: 34020000001320000002:0200000002,34020000002000000001:0

v=0
o=34020000002000000001 0 0 IN IP4 10.45.12.83
s=Play
c=IN IP4 10.45.12.83
t=0 0
m=video 50000 RTP/AVP 96 98 97
a=recvonly
a=rtpmap:96 PS/90000
a=rtpmap:98 H264/90000
a=rtpmap:97 MPEG4/90000
y=0200000002

v=0: 协议版本。这里的值为0,表示SDP协议的版本号。

o=34020000002000000001 0 0 IN IP4 10.45.12.83: 会话所有者标识。包含了用户名、会话ID、会话版本号、网络类型、地址类型和地址等信息。这里的意思是设备ID为34020000002000000001,会话ID和会话版本号都为0,使用的网络类型是IPv4,地址为10.45.12.83。

s=Play: 会话名称和描述。这里的值为"Play",表示该会话用于播放视频。

c=IN IP4 10.45.12.83: 数据连接描述。这里指定了媒体流的连接信息,使用的是IPv4地址10.45.12.83。

t=0 0: 会话活动时间。这里的值表示会话的起始时间和结束时间,都为0,表示未指定特定的会话时间。

m=video 50000 RTP/AVP 96 98 97: 媒体描述。指定了媒体类型、端口、传输层协议和媒体格式等信息。这里是视频类型,端口号是50000,传输层协议是RTP/AVP,支持的媒体格式有96、98和97。

a=recvonly: 媒体扩展属性。这里表示该媒体流是只接收不发送的。

a=rtpmap:96 PS/90000: 媒体扩展属性。指定了媒体格式96(Payload Type)对应的RTP映射信息。这里表示媒体格式96是PS(Payload Structure)类型,采样率是90000。

a=rtpmap:98 H264/90000: 同上,指定了媒体格式98对应的RTP映射信息,表示媒体格式98是H264编码类型,采样率是90000。

a=rtpmap:97 MPEG4/90000: 同上,指定了媒体格式97对应的RTP映射信息,表示媒体格式97是MPEG4编码类型,采样率是90000。

y=0200000002: 会话ID扩展属性。表示会话ID的扩展信息,具体含义可能需要根据协议规范或具体应用进行解释。

这些信息共同描述了一个SIP SDP会话,包括了会话的基本参数、媒体流的传输信息以及媒体格式的描述

5.2 邀请INVITE响应示例

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.45.12.83:5061;rport=5061;branch=z9hG4bK735682946
From: <sip:34020000002000000001@3402000000>;tag=671682946
To: <sip:34020000001320000002@10.45.12.141:5060>;tag=140553725
Call-ID: 787682407
CSeq: 3 INVITE
Contact: <sip:34020000001110000002@10.45.12.141:5060>
Content-Type: application/sdp
User-Agent: IP Camera
Content-Length:   199

v=0
o=34020000001110000002 261 261 IN IP4 10.45.12.141
s=Play
c=IN IP4 10.45.12.141
t=0 0
m=video 15060 RTP/AVP 96
a=setup:active
a=sendonly
a=rtpmap:96 PS/90000
a=filesize:0
y=0200000002

v=0: 协议版本。这里的值为0,表示SDP协议的版本号。

o=34020000001110000002 261 261 IN IP4 10.45.12.141: 会话所有者标识。包含了用户名、会话ID、会话版本号、网络类型、地址类型和地址等信息。这里的意思是设备ID为34020000001110000002,会话ID和会话版本号都为261,使用的网络类型是IPv4,地址为10.45.12.141。

s=Play: 会话名称和描述。这里的值为"Play",表示该会话用于播放视频。

c=IN IP4 10.45.12.141: 数据连接描述。这里指定了媒体流的连接信息,使用的是IPv4地址10.45.12.141。

t=0 0: 会话活动时间。这里的值表示会话的起始时间和结束时间,都为0,表示未指定特定的会话时间。

m=video 15060 RTP/AVP 96: 媒体描述。指定了媒体类型、端口、传输层协议和媒体格式等信息。这里是视频类型,端口号是15060,传输层协议是RTP/AVP,支持的媒体格式只有96。

a=setup:active: 媒体扩展属性。这里表示媒体流是主动设置的。

a=sendonly: 媒体扩展属性。这里表示该媒体流是只发送不接收的。

a=rtpmap:96 PS/90000: 媒体扩展属性。指定了媒体格式96(Payload Type)对应的RTP映射信息。这里表示媒体格式96是PS(Payload Structure)类型,采样率是90000。

a=filesize:0: 媒体扩展属性。表示文件大小为0。

y=0200000002: 会话ID扩展属性。表示会话ID的扩展信息,具体含义可能需要根据协议规范或具体应用进行解释。

5.3 返回ACK示例,也就是告诉对方准备好了,可以发送媒体流了

ACK sip:34020000001320000002@10.45.12.141:5060;transport=udp SIP/2.0
Via: SIP/2.0/UDP 10.45.12.83:5061;rport=5061;branch=z9hG4bK672682961
From: <sip:34020000002000000001@3402000000>;tag=671682946
To: <sip:34020000001320000002@10.45.12.141:5060>;tag=140553725
Call-ID: 787682407
CSeq: 3 ACK
Max-Forwards: 70
User-Agent: Easy SIP Server
Content-Length: 0

6:媒体流传输

接下来IPC应该主动向国标服务器发送RTP流,RTP协议带的媒体流封装格式为PS,传输层协议为UDP,RTP源端地址为15060,目的端地址为50000,SSRC=0200000002

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GB/T28181-2016协议SDK是指符合国家标准GB/T28181-2016《视频监控联网系统通信协议》的软件开发工具包(Software Development Kit)。 GB/T28181-2016是中国国家标准化管理委员会发布的视频监控联网系统通信协议。该协议规定了视频监控设备之间的通信方式和数据格式,以便实现视频设备的互联互通。而GB/T28181-2016协议SDK是为了便于软件开发人员在开发视频监控相关应用程序时,能够快速、准确地实现与各种视频监控设备之间的通信而提供的工具包。 GB/T28181-2016协议SDK提供了一系列的软件库、接口和示例代码,可以帮助开发人员快速集成和开发符合该协议的应用程序。通过使用SDK,开发人员可以轻松地实现与视频监控设备的通信,并获取设备的视频流、音频流、告警信息等数据。同时,SDK还提供了一些常用的功能和接口,例如设备发现、设备状态查询、云台控制等,以便开发人员能够更方便地实现各种视频监控相关的功能。 通过使用GB/T28181-2016协议SDK,开发人员可以快速实现与视频监控设备的互联互通功能,提高开发效率和程序稳定性。这对于视频监控行业来说,是非常重要的一项技术支持。而且,GB/T28181-2016协议SDK符合国家标准,保证了应用程序与不同品牌、型号的视频监控设备之间的兼容性,提高了整个行业的互操作性。 总而言之,GB/T28181-2016协议SDK是一个符合国家标准的软件开发工具包,用于实现与视频监控设备之间的通信和互联互通功能。它的出现,为视频监控行业的软件开发提供了一种标准化、高效的开发方式,促进了整个行业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值