GB28181国标平台资料整理
Posted kn-zheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GB28181国标平台资料整理相关的知识,希望对你有一定的参考价值。
介绍
GB28181协议指的是国家标准GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》1,该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。GB28181协议信令层面使用的是SIP(Session Initiation Protocol)协议2,流媒体传输层面使用的是实时传输协议(Real-time Transport Protocol,RTP)协议3,因此可以理解为GB28181是在国际通用标准的基础之上进行了私有化定制以满足视频监控联网系统互联传输的标准化需求。本文旨在说明在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。
GB28181协议会话通道实际上使用的是SIP协议,并且在SIP协议的基础之上做了些私有化处理。SIP是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。SIP中一个比较重要的概念是用户代理(User Agent),指的是一个SIP逻辑网络端点,用于创建、发送、接收SIP消息并管理一个SIP会话。SIP用户代理又可分为用户代理客户端UAC(User Agent Client)和用户代理服务端UAS(User Agent Server)。UAC创建并发送SIP请求,UAS接收处理SIP请求,发送SIP响应。SIP协议会与许多其它的协议协同工作,如SIP报文内容发送会话描述协议(Session Description Protocol,SDP)4,SDP协议描述了会话所使用流媒体细节,如:使用哪个IP端口,采用哪种编解码器等等。SIP的一个典型用途是:SIP会话传输一些简单的经过报文的实时传输协议流,RTP本身才是语音或视频的载体。在GB28181协议中,联网系统在进行视音频传输及控制时应建立两个传输通道: 会话通道和媒体流通道。会话通道用于在设备之间建立会话并传输系统控制命令; 媒体流通道用于传输视音频数据, 经过压缩编码的视音频流采用流媒体协议RTP/RTCP传输
图例:
GB28181文档地址:
http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=469659DC56B9B8187671FF08748CEC89
GB28181相关项目:
https://gitee.com/pan648540858/wvp-GB28181-pro
https://gitee.com/qinqi/JNVS
https://github.com/GB28181/GB28181.Solution
https://gitee.com/chatop2020/AKStream?_from=gitee_search
https://github.com/ZLMediaKit/ZLMediaKit
https://gitee.com/kkkkk5G/MediaServerUI
sip协议
关于sip协议,这里使用sip通信报文配上注释来说明会更加详细。
1.注册文本
摄像头 Sip
//摄像头发起的第一次注册信息
REGISTER sip:34020000002000000002@192.168.6.14:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.9.200:5060;rport;branch=z9hG4bK1945009904
Route: <sip:34020000001110000011@192.168.6.14:5060;lr>
From: <sip:34020000001110000011@192.168.9.200:5060>;tag=321443940 //在这里我们可以拿到设备的id
To: <sip:34020000001110000011@192.168.9.200:5060>
Call-ID: 214776626@192.168.9.200 //这个是会话的唯一标识,回复时一定要带这个,要不然报错
CSeq: 1 REGISTER //这里代表第一次注册,按照国际惯例是先回复401请求校验信息,回复信息也要携带
Contact: <sip:34020000001110000011@192.168.9.200:5060>
Max-Forwards: 70
User-Agent: Dahua SIP UAS V1.0 //厂商信息
Expires: 3600 //注册有效时间,不为代表注册,为0时代表注销
Content-Length: 0 //请求体长度为0,说明下面没有数据了,没有携带消息体
//服务器回复401校验
SIP/2.0 401 Unauthorized
CSeq: 1 REGISTER //回复第一次注册
Call-ID: 214776626@192.168.9.200 //会话id
From: <sip:34020000001110000011@192.168.9.200:5060>;tag=793568880
To: <sip:34020000001110000011@192.168.9.200:5060>
Via: SIP/2.0/UDP 192.168.9.200:5060;rport;branch=z9hG4bK45766126 //这个字段直接拷贝上面的来回复
WWW-Authenticate: Digest realm="3402000000",nonce="962535b552b6e29883ff988c0065ddc2" //这里表明验证参数,nonce这里是Call-ID+设备id的md5 ,这个值只是提供校验的随机数,对于怎么进行校验,下面代码详解
Content-Length: 0
//摄像头第二次注册
REGISTER sip:34020000002000000002@192.168.6.14:5060 SIP/2.0 //留意该文本,按照空格切割,uri为第二个字符串,第一个是方法,第三个是请求版本号,类似HTTP/1.1
Via: SIP/2.0/UDP 192.168.9.200:5060;rport;branch=z9hG4bK1647127273
Route: <sip:34020000001110000011@192.168.6.14:5060;lr>
From: <sip:34020000001110000011@192.168.9.200:5060>;tag=793568880
To: <sip:34020000001110000011@192.168.9.200:5060>
Call-ID: 214776626@192.168.9.200
CSeq: 2 REGISTER //第二次注册
Contact: <sip:34020000001110000011@192.168.9.200:5060>
Authorization: Digest username="34020000001110000011", realm="3402000000", nonce="962535b552b6e29883ff988c0065ddc2", uri="sip:34020000002000000002@192.168.6.14:5060", response="77ed0f6d00ab1e0c1a871dd5e03edb65", algorithm=MD5 //加密算法 以及检验的参数
Max-Forwards: 70
User-Agent: Dahua SIP UAS V1.0
Expires: 3600
Content-Length: 0
//第二次校验成功的话直接响应200 之后摄像头会发起心跳保活
SIP/2.0 200 OK
CSeq: 2 REGISTER //回复第二次注册
Call-ID: 214776626@192.168.9.200 //唯一会话id
From: <sip:34020000001110000011@192.168.9.200:5060>;tag=793568880
To: <sip:34020000001110000011@192.168.9.200:5060>
Via: SIP/2.0/UDP 192.168.9.200:5060;rport;branch=z9hG4bK1647127273
Expires: 3600
Date: Fri, 10 Apr 2021 08:24:49 GMT
Content-Length: 0
//摄像头回复注销信息 这里注意Expires字段,为0代表注销 服务器收到后直接做业务操作回复200
REGISTER sip:34020000002000000002@192.168.6.14:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.9.200:5060;rport;branch=z9hG4bK399301364
Route: <sip:34020000001110000011@192.168.6.14:5060;lr>
From: <sip:34020000001110000011@192.168.9.200:5060>;tag=793568880
To: <sip:34020000001110000011@192.168.9.200:5060>
Call-ID: 214776626@192.168.9.200
CSeq: 3 REGISTER //第三次注册
Contact: <sip:34020000001110000011@192.168.9.200:5060>
Max-Forwards: 70
User-Agent: Dahua SIP UAS V1.0
Expires: 0 //注销
Content-Length: 0
注: 平台之间注册不需要鉴权,直接回复ok
2.心跳文本
//摄像头发送过来的Keepalive保活信息
MESSAGE sip:34020000002000000002@192.168.6.14:5060 SIP/2.0 //MESSAGE 方法名,类似http的get/post方法
Via: SIP/2.0/UDP 192.168.1.8:5060;rport;branch=z9hG4bK700933079 //这个不用理会,但需要拷贝该字段,回复200要用
From: <sip:34020000001110000011@192.168.1.8:5060>;tag=1896094222 //同上
To: <sip:34020000002000000002@192.168.6.14:5060> //同上
Call-ID: 78119256@192.168.1.8 //同上
CSeq: 20 MESSAGE //唯一标识
Max-Forwards: 70
User-Agent: Dahua SIP UAS V1.0
Content-Type: Application/MANSCDP+xml //消息体格式
Content-Length: 178 //消息体长度,不带消息头,下面会空一行才会读到消息体,解析时注意下读到空行
<?xml version="1.0" encoding="GB2312" ?> //编码
<Notify>
<CmdType>Keepalive</CmdType> //注意这里的消息体,大华发送的消息体有空格的,海康的消息体不带空格,需要做下处理,或者使用xml工具类,这里为了方便直接解析字符串
<SN>0</SN>
<DeviceID>34020000001110000011</DeviceID> //设备编号
<Status>OK</Status>
</Notify>
//服务器需要对其进行200回复,超过不回复次数就会断流
SIP/2.0 200 OK //回复200
CSeq: 20 MESSAGE //拷贝上面心跳信息
Call-ID: 78119256@192.168.1.8 //同上
From: <sip:34020000001110000011@192.168.1.8:5060>;tag=1896094222 //同上
To: <sip:34020000002000000002@192.168.6.14:5060> //同上
Via: SIP/2.0/UDP 192.168.1.8:5060;rport;branch=z9hG4bK700933079 //同上
Content-Length: 0 //没有消息体,直接写0
请求
客户端向服务端发送示例:
3.catalog
sip协议
Via: SIP/2.0/UDP 27.10.24.1:5061;branch=z9hG4bK8210143023101430fa101430b
Call-ID: 9ae8ca0e3be8ca0ee2e8ca0ea0e8ca0e16e8c@27.10.24.1
From: <sip:42010000012005000001@27.10.24.1:5061;transport=udp>;tag=63a161ccc2a161cc1ba161cc59a161cc
To: <sip:45510000012005000001@27.10.30.98;transport=udp>
CSeq: 134349445 MESSAGE
Max-Forwards: 70
Expires: 90
User-Agent: IMOS/V3
Contact: <sip:42010000012005000001@27.10.24.1:5061>
Content-Type: application/MANSCDP+xml
Content-Length: 1288
<?xml version="1.0" encoding="GB2312"?>
<Response>
<CmdType>Catalog</CmdType>
<SN>859327</SN>
<DeviceID>4201010303</DeviceID> //设备编号,实际是上级组织编号
<SumNum>72</SumNum>
<DeviceList Num="1">
<Item> //核心数据
<DeviceID>42010000011315000808</DeviceID> //真正的设备编号
<Name>A ��ɽ�������·��-C79</Name> //名称
<Manufacturer>uniview</Manufacturer>
<Model>h3c</Model> //型号
<Owner>h3c</Owner> //所属厂商
<CivilCode>4201010303</CivilCode>
<Block></Block>
<Address>27.10.24.1</Address> //来源地址
<Parental>0</Parental>
<ParentID>4201010303</ParentID> //上级编号
<SafetyWay>0</SafetyWay>
<RegisterWay>1</RegisterWay>
<CertNum>1</CertNum>
<Certifiable>0</Certifiable>
<ErrCode>400</ErrCode>
<EndTime>2011-11-11T19:46:17</EndTime>
<Secrecy>0</Secrecy>
<IPAddress>27.14.33.75</IPAddress> //设备实际地址
<Port>8800</Port>
<Password>admin</Password>
<Status>ON</Status>
<Longitude>114.306191347343</Longitude>
<Latitude>30.6136439824189</Latitude>
<Info> //设备的相关信息
<CameraType>1</CameraType>
<PTZType>1</PTZType>
<PositionType>2</PositionType>
<RoomType>1</RoomType>
<UseType>1</UseType>
<SupplyLightType>1</SupplyLightType>
<DirectionType>1</DirectionType>
<Resolution></Resolution>
<DownloadSpeed></DownloadSpeed>
<SVCSpaceSupportMode>0</SVCSpaceSupportMode>
<SVCTimeSupportMode>0</SVCTimeSupportMode>
<StreamNum>1</StreamNum></Info>
</Item>
</DeviceList>
</Response>
4.订阅通知
订阅通知协议
注: 订阅通知相比catalog,主要是在head头里面多了一个event和expires
上级平台向下级平台发送流程
上下级平台发送
一个简单的gb28181直播预览流程:
- 接收下级域的注册请求
- 发送catalog请求,查看设备信息
- 选择设备进行预览
catalog流程: - 向下级域发送catalog请求
- 下级域回复200
- 下级域发送设备信息,可能一次只发送两个设备的信息
- 上级域回复200
- 循环步骤3和4
向下级域发送catalog请求:
MESSAGE sip:34020000001110000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.30.173:5060;rport;branch=SrsGbB14675203
From: <sip:34020000002000000001@192.168.30.173:5060>;tag=SrsGbF87133810
To: <sip:34020000001110000001@3402000000>
Call-ID: 202015285061
CSeq: 100 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: SRS/4.0.26(Leo)
Content-Length: 149
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<CmdType>Catalog</CmdType>
<SN>49013560</SN>
<DeviceID>34020000001110000001</DeviceID>
</Query>
下级域回复200:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.30.173:5060;rport=5060;branch=SrsGbB14675203
From: <sip:34020000002000000001@192.168.30.173:5060>;tag=SrsGbF87133810
To: <sip:34020000001110000001@3402000000>;tag=283848756
Call-ID: 202015285061
CSeq: 100 MESSAGE
User-Agent: Embedded Net DVR/NVR/DVS
Content-Length: 0
下级域发送设备信息:
MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.30.228:5060;rport;branch=z9hG4bK1779972060
From: <sip:34020000001110000001@3402000000>;tag=1212522955
To: <sip:34020000002000000001@3402000000>
Call-ID: 1323356603
CSeq: 20 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: Embedded Net DVR/NVR/DVS
Content-Length: 902
<?xml version="1.0" encoding="gb2312"?>
<Response>
<CmdType>Catalog</CmdType>
<SN>49013560</SN>
<DeviceID>34020000001110000001</DeviceID>
<SumNum>8</SumNum>
<DeviceList Num="2">
<Item>
<DeviceID>34020000001320000001</DeviceID>
<Name>өʯÔÆ</Name>
<Manufacturer>Manufacturer</Manufacturer>
<Model>Camera</Model>
<Owner>Owner</Owner>
<CivilCode>CivilCode</CivilCode>
<Address>192.168.30.200</Address>
<Parental>0</Parental>
<SafetyWay>0</SafetyWay>
<RegisterWay>1</RegisterWay>
<Secrecy>0</Secrecy>
<Status>ON</Status>
</Item>
<Item>
<DeviceID>34020000001320000002</DeviceID>
<Name>Camera 01</Name>
<Manufacturer>Manufacturer</Manufacturer>
<Model>Camera</Model>
<Owner>Owner</Owner>
<CivilCode>CivilCode</CivilCode>
<Address>192.168.30.195</Address>
<Parental>0</Parental>
<SafetyWay>0</SafetyWay>
<RegisterWay>1</RegisterWay>
<Secrecy>0</Secrecy>
<Status>ON</Status>
</Item>
</DeviceList>
</Response>
上级域回复200:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.30.228:5060;rport=5060;received=192.168.30.228;branch=z9hG4bK1779972060
From: <sip:34020000001110000001@3402000000>;tag=1212522955
To: <sip:34020000002000000001@3402000000>
CSeq: 20 MESSAGE
Call-ID: 1323356603
User-Agent: SRS/4.0.26(Leo)
Content-Length: 0
sip相关的开源项目
pjsip
https://github.com/pjsip/pjproject
jain-sip
https://gitee.com/mirrors/jain-sip
gosip
2>,流媒体平台
https://github.com/648540858/wvp-GB28181-pro/tree/wvp-28181-2.0
https://gitee.com/18010473990/wvp-GB28181/tree/wvp-28181-2.0/
3>,流媒体框架
https://github.com/xiongziliang/ZLMediaKit
其他
参考:
https://zhuanlan.zhihu.com/p/393863592
https://www.cnblogs.com/xiaxveliang/p/12434170.html
https://blog.csdn.net/sbddbfm/article/details/99095022
https://www.toutiao.com/article/6829089709172457988/?wid=1648729532579
本文主要是做一个归纳整理,日后有新的资料或许会一直更新。
移动视频类设备&平台国标GB28181输入输出,GB28181平台对接说明
VMS/smarteye支持28181输入、输出及安卓设备走28181接第三方国标平台 说明文档
1. 前言
国标服务指 GB/28181-2011 协议, 该协议规定了城市监控报警联网系统中信息传输、交换、 控制的互联结构、通信协议结构,传输、交换、控制的基本要求和安全性要求,以及控制、 传输流程和协议接口等技术要求,统一不同厂商生产的网络视频产品的应用接口标准,便于平台接入其他厂商的监控设备,获取视频流。
2、Smarteye平台支持28181设备接入说明
VMS/smarteye平台支持第三方的国标协议的设备接入,该实现机制是一个前置的视频接入协议网关的软件插件的形式。其实现的功能是smarteye平台作为一个国标主平台,让其他的国标协议的设备接入。
2.1、修改平台配置文件
1、双击以文本形式打开config.ini配置文件修改里面的配置参数
2、Server IP 填写电脑本地的IP地址
2.2、运行视频接入协议网关
双击打开SmartEye_28181Platform.exe应用文件,出现下图CMD窗口中红色方框标注的信息,表示设备登录成功。
注意:这个server插件可以集成到smarteye server control center控制面板,以服务启停的方式来控制。详见《服务器插件手动安装说明》,集成后的smarteye server面板如下图示:
2.3、设备侧配置
为确保设备顺利接入平台,需要在待接入平台的设备上启用 GB28181 协议,并配置相关协议的参数项,对接SmartEye-28181平台只需要以下修改三项参数:
1、SIP服务器ID要和平台config.ini配置文件中serverid的值一致;
2、SIP服务器域要和平台config.ini配置文件中serverfield的值一致;
3、SIP用户名总共是20位数字,保持前14位不变,修改后6位数字。SIP用户名不允许重复,否则会ID导致冲突。
服务器IP:与上述配置文件填写的Server IP一致 端口号: 5060
下图以海康球机输出28181的配置为例说明
接入后如下图示:
3、Smarteye平台输出28181说明
3.1、概述
4G执法记录仪可以直接输出28181接入海康/宇视等国标平台,亦可先走私有协议汇聚到私有平台,然后通过平台转码输出28181再接入海康等国标平台,这样可有效解决28181在4G图传中UDP丢包花屏TCP低效卡顿延迟大等无法解决的固有顽疾;走UDP私有协议汇聚到私有平台SmartEye再转入国标平台,既高效实时,又可实现对设备的自我管理自我维护,出现问题可与国标平台隔离自查,避免了责任纠纷。
3.2、前提要求
1. 安装服务器control centre(window系统)
2. 28181转发插件文件夹搭建在服务器上
(1)服务器目录下创建cc_plugin文件夹
(2)把28181插件放在cc_plugin文件夹下
(3)重启服务器
3.3、正常运行状态见下图
3.4、注意事项
3.4.1、国标平台注册下级平台
上级:国标大平台
下级:smarteye平台
提供上级平台国标id ,ip和sip端口,下级平台id,用户名,密码,信令网关ip,信令网关端口
3.4.2、修改配置文件
1.填写配置文件config.ini
注意:如果没有配置下级平台的id,可与用户名一致; 上级平台域取平台id前10位;
设备deviceid设置方式 下级id前10位+132+7位自定义
关于local ip,port说明:
Localip 1.内网使用
2. 外网使用 不限制可填127.0.0.1
3. 限制的话需要填出口网关的ip 和端口
配置成功后,重启28181插件
运行成功后,可直接在国标平台客户端查看视频
4、MCP/MPU接入第三方国标平台说明
4.1、配置操作说明
1、本地SIP端口:国标标准的是5060
2、Sip服务器ID:平台提供,一般都是20位的,如果是其他位数,必须向平台技术确认是可以使用的。
3、Sip服务器域:填写sip服务器ID的前十位。
4、Sip用户名: 平台提供
5、Sip用户认证ID:填写内容与sip用户名内容一致
6、Sip用户认证密码:如果平台提供,则填写提供的数据;如果未提供,则默认不修改
7、注册有效期及心跳周期、最大心跳超时次数,一般不会改动
8、视频通道编码ID:填写内容与sip用户名内容一致
接入华为千里眼平台
接入宇视平台,
接入科达平台,
接入大华DSS,
smarteye平台以下级平台方式走28181接入海康等国标大平台,28181平台对接, https://v.douyin.com/JGu3NRL/
4G执法记录仪 走国标28181接入大华平台, https://v.douyin.com/JGu3g3t/
4G智能安全帽,接入新疆国网宇视国标28181平台, https://v.douyin.com/dkXG2ko/
大屏三摄4G单兵执法仪BC310,可28181接入海康等国标大平台,https://www.besovideo.com/product/detail?i=27
4G智能安全帽 接入南瑞继远电网统一视频监控平台,https://v.douyin.com/dkX9bC3/
以上是关于GB28181国标平台资料整理的主要内容,如果未能解决你的问题,请参考以下文章
移动视频类设备&平台国标GB28181输入输出,GB28181平台对接说明
移动视频类设备&平台国标GB28181输入输出,GB28181平台对接说明
LiveGBS国标GB_T28181视频平台如何配置全局目录订阅周期(秒)快捷配置开启目录订阅周期
Android国标接入端如何播放GB28181平台端语音广播数据