GB28181协议总结(含详细报文解析)

1.1 GB28181简介

GB/T28181《安全防范视频监控联网系统信息传输、交换、控制技术要求》是由公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会_百度百科SAC/TC100)归口,公安部一所等多家单位共同起草_百度百科的一部国家标准。目前更新到GB/T28181-2016

该标准规定了城市监控报警联网系统中信息传输_百度百科、交换、控制的互联结构、通信协议结构,传输、交换、控制的基本要求和安全性要求,以及控制、传输流程和协议接口等技术要求。该标准适用于安全防范监控报警联网系统的方案设计、系统检测、验收以及与之相关的设备研发、生产,其他信息系统可参考采用。

(注:关于GB28181的详细功能和交互流程请查看国标文档,本文档仅对NVR项目组28181功能开发过程中涉及到的流程和问题进行归纳和总结)

GB28181的服务器可使用网上的开源服务器 LiveGBS,该软件可免费使用,有效期30天,该软件到期后,从网站上重新下载即可再次使用。该网站有安装使用和常见问题说明,此处不再赘述,软件的链接如下:

LiveGBS GB28181流媒体服务 | 青柿视频流媒体服务解决方案

(注:关于GB28181的本地服务器的使用和平台对接请查看文档“28181平台对接使用说明”)

1.2 SIP简介

GB28181协议会话通道使用的是SIP协议,在SIP协议基础上做了私有化处理

SIP协议,英文为 Session Initiation Protocol, 中文翻译为会话发起协议。顾名思义,就是在网络上发起会话。

1.2.1 SIP账号

会话双方需要有一个SIP账号,也称为URI,例:sip:peter@company.com:5060

其中:

(1) sip: 表示采用sip协议

(2) peter是用户名, 也称为帐号. 用字母和数字均可。

(3) company.com 是帐号所属的服务器域名( 也可以用IP地址,例如: sip:peter@192.168.1.100)

(4) 最后的5060是端口号。 SIP协议默认端口为5060, 默认采用UDP传输

:5060的意思是,客户端在名为 company.com的服务器的5060端口号上等待对方连接

如果端口号是 5060,也可以省略不写。

则,上述SIP帐号写为: sip: peter@company.com

除了sip:这几个字母, SIP帐号就像一个邮件帐号

没错,SIP协议设计者的意图就是让SIP帐号与邮件帐号一致,方便与邮箱服务整合。

对用户来说方便,你要打电话给我,我的电话号就是邮箱号。

1.2.2 SIP消息

上面讲过,一个通话过程,两端要传递多种信号。在SIP协议中,这些信号是一种约定格式的IP数据包,称为SIP消息。

SIP消息有好几种,让我们看一个通话过程理解一下

1, 软电话A 向 B 发送一个 SIP消息 INVITE, 邀请B通话

2, 软电话B振铃,向A 回复一个SIP消息 RING, 通知 A 正在振铃中,请A等待

3, 软电话B提机,向A发一个SIP消息 OK, 通知 A 可以通话了

4, 软电话A 向 B 回复一个回应消息 ACK,正式启动通话

5,接下来,双方通话

6,软电话B挂机,向 A 发一个SIP消息 BYE, 通知 A 通话结束

7, 软电话A 向 B 回复一个消息 OK, 通话结束

SIP协议规定了会话的发起过程,但没有规定会话的内容及格式。会话内容可以是文本、语音、视频等。因此,SIP协议要结合其它协议,如:用SDP协议描述要传递的内容格式,用RTP,RTSP流媒体协议传输媒体,才能完成整个通信过程。 SIP协议这样做为了简化协议,留下扩展的灵活性。

1.2.3 SIP消息内容及格式

SIP协议是由国际互联网协会(IETF)制定的,这个协会也制订了HTTP协议。所以,这两个协议有很多地方是相似的。

与HTTP协议相同,SIP协议也采用Client/Server模式,Client发请求,Server响应,请求和响应消息均采用纯文本方式。

INVITE 是主叫做为Client, 被叫做为Server, 发起的一个请求 (类似HTTP请求,例如POST)

请求消息分成几个部分,一是起始行(start line), 二是消息头部(message head),内含一个或多个头字段(head field), 三是一个空行(empty line),表示头部的结束。四是一个消息体(message body)

(1)起始行

起始行格式:Method URI SIP_VERSION

(1)Method:请求方法,类似于HTTP协议中的POST、GET;

SIP协议规定的Method有六种: INVITE, ACK, CANCEL用于创建对话,BYE用于结束对话, REGISTER用于登记,OPTIONS用于查询服务器能力

(2)URI:请求的用户或服务器

(3)SIP_VERSION:SIP版本号

(2)消息头部

头部包含一个或多个头字段(head field), 每个字段一行。

一个字段行 = name : value ; value;

一个请求消息头部至少要包含六个字段:Via, To, From, CSeq, Caller-ID, Max-Forwards

(3)消息体

编码方式主要是由头部确定,现在一般为SDP。

v=0 //版本号为0

o=user1 685988692 621323255 IN IP4 192.168.31.131

//建立者用户名+会话ID+版本+网络类型+地址类型+地址

s=- //会话名

c=IN IP4 192.168.31.131 //连接信息:网络类型+地址类型+地址

t=0 0 //会话活动时间 起始时间+终止时间

m=audio 49432 RTP/AVP 0 8 101

//媒体描述:媒体+端口+传送+格式列表

音频 + 端口49432 + 传输协议RTP + 格式AVP,有效负荷0(u率PCM编码)

a=rtpmap:0 PCMU/8000

//0或多个会话属性: 属性 + 有效负荷+ 编码名称 + 抽样频率。

// rtpmap + 0型 + PCMU + 8KHz

a=rtpmap:8 PCMA/8000 //a 可以有多个, 见SDP协议

a=rtpmap:101 telephone-event/8000

a=sendrecv

二、常用交互流程和类型

2.1 注册和注销(Register)

2.1.1 注册和注销流程

如上图所示为注册和注销流程,流程比较明确,主要涉及到4次交互

1)设备端向平台端发送注册信令 REGISTER

(若是注销,消息里带的有效期参数Expires值为0

2)平台端回应401,同时回应认证信息给设备端

3)设备端再次向平台端发送注册信令 REGISTER,同时带了认证信息参数

(若是注销,消息里带的有效期参数Expires值为0

4)认证成功,平台回应200 OK

2.1.2 注册流程抓包内容实例

 

2.2 控制命令

如上图所示为设备控制交互流程,包含很多命令,如设备目录信息查询(Catalog),前端设备控制(DeviceControl),设备信息查询(DeviceInfo),预置点查询(PresetQuery),报警通知(Alarm)等等

2.2.1 设备目录信息查询(Catalog)

平台端发通过此信令获取设备的目录信息,即设备端的通道设备信息,如NVR有几个通道,各个通道的设备信息和在线状态等等

抓包内容示例

 

2.3 视频播放

如上左图图为完整的一次音视频点播流程图

对于设备端(即媒体流发送者)来说,可以将流程简化为如上右图所示

1、平台端向设备端发起INVITE请求,即请求取流

2、设备端回复200 OK

3、平台端向设备端向发送ACK

4、设备端向平台端发送媒体流数据

5、平台端向设备端发起BYE请求,即结束取流

6、设备端回复200 OK,停止发送媒体流数据

2.3.1 视频流传输模式

GB28181的流传输模式分为三种:

1UDP

服务端监听UDP端口,通过INVITE信令告知设备端口,设备端向服务端发起流传输。

2TCP被动

服务端监听TCP端口,通过INVITE信令告知设备端口,设备端去connect服务端,连接成功后,设备端向服务端发起流传输。

3TCP主动

设备端监听TCP端口,通过INVITE信令的回复内容告知服务端端口,服务端去connect设备端,连接成功后,设备端向服务端发起流传输。

2.3.2 会话与流传输的TCP和UDP

2016版以前,会话和流传输是使用UDP的方式;在2016版已经支持TCP方式。此处进行简单说明

此处的TCP主要指两个方面

1)信令连接支持TCP

信令连接主要指代设备端与平台端进行信息交互的连接

注:信令连接使用TCP还是UDP是由设备端决定

2)取流连接支持TCP

取流连接主要指代设备端与平台端进行流数据发送的连接

取流的TCP方式分为两种,TCP主动和TCP被动,这两者的差异主要在建立TCP送流

aTCP被动:平台端监听端口,平台端被动的等待设备端建立TCP送流连接

bTCP主动:设备端监听端口,平台端主动的与设备端建立TCP送流连接

注:取流连接使用TCP还是UDP是由平台端决定

请求播放过程抓包内容实例:

INVITE信令部分参数说明

如上图所示,个别选项的取值和含义

选项

选项含义和取值

s=Play

操作类型为播放实时流

实时播放:Play

录像回放:Playback

录像下载:Dowmload

对讲:Talk

m=video 30015 TCP/RTP/AVP 96 97 98

媒体类型为视频/视音频,传输端口为30015,采用RTP over TCP方式,负载类型为96 97 98

视频/视音频:video,音频:audio

TCPTCP/RTP/AVPUDP:RTP/AVP

a=recvonly

recvonly 仅接收

sendonly 仅发送

a=rtpmap:96 PS/90000

a=rtpmap:98 H264/90000

a=rtpmap:97 MPEG4/90000

媒体流格式

96PS

97H264

98MPGE4

a=setup:passive

TCP连接方式为被动

TCP被动:passiveTCP主动:active

a=streamprofile

请求主码流/子码流

0:主码流

1、子码流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值