《GBT28181规范调研报告.ppt》由会员分享,可在线阅读,更多相关《GBT28181规范调研报告.ppt(23页珍藏版)》请在第壹文秘上搜索。
1、GB28181/NVR介绍1.GB28181/NVR介绍2.NVR设备通道编码ID介绍1 GB28181将 SIP定位为联网系统的主要信令基础协议,并利用 SIP协议的有关扩展,实现了对非会话业务的兼顾,例如,对报警业务、历史视音频回放、下载等的支持。目前有GB28181-2011和 GB28181-2016两个版本。 GB28181对联网系统的用户和设备的管理,全部通过一个20位的设备ID号来管理。 SIP(会话初始化协议)是在 IP网络上进行多媒体通信的应用层控制协议,用来创建,修改和终止有多个参与者的多媒体会话进程。 SIP协议使用 RTP协议传送音视频数据流,使用 SDP协议进行媒体描
2、述。 NVR网络硬盘录像机,可以将摄像头绑定在NVR设备上,直接通过NVR即可获取到绑定摄像头的实时音视频,也可以选定时间、指定摄像头进行录像,录像文件存储于NVR设备上。 通道号和摄像头的IP地址一一对应,即使更换了绑定摄像头 通道号是不会变的通道号和视频通道编码ID一一对应GB28181中几乎所有操作都是针对视频通道编码ID进行操作(最后5位可以自行设置)填写服务器地址,即Demo地址信息NVR的设备ID,Demo通过这个ID和地址信息与NVR进行通信开发流程实时视频/历史录像21.SIP具体协议介绍2.注册3.信息查询4.实时视频、历史录像获取5.注销6.异常数据处理一.SIP具体协议介
3、绍(INVITE协议):INVITE sip:34020000001320000007192.168.15.151:5060 SIP/2.0SIP协议命令类型Via: SIP/2.0/UDP 192.168.15.118:5061;rport;branch=z9hG4bKPj77458f1bMax-Forwards: 70From: ;tag=026c1956 SIP请求的发送者To: SIP请求的接受者Contact: SIP请求发送者的实际地址Call-ID: 172fbd2d-a964-4064-8d36-223fc61336ba和tag共同标志一次完整通信会话CSeq: 21896 I
4、NVITE在Call-ID相同情况下,标志消息顺序编号(当消息没有响应时,会加一重发)Allow: INVITE, ACK, BYE, CANCEL, UPDATEContent-Type: application/sdpSDP负载消息的类型Content-Length: 155(SDP消息体)v=0版本号o=34020000001240000001 0 0 IN IP4 192.168.15.118SIP接收者ID 会话id 版本 网络信息s=Play历史录像获取为 Downloadc=IN IP4 192.168.15.118网络信息t=0 0历史录像获取为 1483422881 1483
5、422915m=video 15090 RTP/AVP 96传输媒体信息 audio/video 本机接收数据端口 传输数据采用方式 可以接收媒体类型a=recvonly属性a=rtpmap:96 PS/90000可以接受的音视频数据类型一.SIP具体协议介绍(MESSAGE 协议):MESSAGE sip:34020000001320000007192.168.15.151:5060 SIP/2.0SIP协议命令类型Via: SIP/2.0/UDP 192.168.15.118:5061;rport;branch=z9hG4bKPj77458f1bMax-Forwards: 70From:
6、;tag=026c1956 SIP请求的发送者To: SIP请求的接受者Contact: SIP请求发送者的实际地址Call-ID: 172fbd2d-a964-4064-8d36-223fc61336ba和tag共同标志一次完整通信会话CSeq: 21896 MESSAGE 在Call-ID相同情况下,标志消息顺序编号(当消息没有响应时,会加一重发)Allow: INVITE, ACK, BYE, CANCEL, UPDATEContent-Type: Application/MANSCDP+xmlSDP负载消息的类型Content-Length: 155(SDP消息体) 命令类型(查询命令
7、)Catalog 命令类型(RecordInfo 查询历史录像)248 命令序列号34020000001110000001查询设备ID号(NVR设备ID号) 二.注册(Register) 安全注册 GB28181使用的是SIP规定的 Register方法实现。 当客户端第一次接入时,客户端将持续向 Server端发送 REGISTER消息,直到 Server端回复200 OK代表注册成功。每隔一定时间客户端都会再次向服务器注册一遍,防止注册过期导致断开连接。三.信息查询 注册成功后,客户端与服务器之间信息查询操作,如目录查询、历史录像文件查看等,GB28181使用 SIP扩展协议规定的 Mes
8、sage方法实现。目前使用了两种类型的查询命令: 1.Catalog 设备目录查询消息; 2.RecordInfo 历史录像文件查询消息。三.信息查询-设备目录信息查询 1:Catalog 设备目录查询消息。发送此命令给NVR可以获取到NVR上绑定的摄像头的信息,NVR返回的消息格式如下: 34020000001320000001设备ID编号(与通道号一一对应)Camera 01ManufacturerCameraOwnerCivilCode192.168.15.3此通道IP地址(当此通道没有摄像头时 这里为 0.0.0.0)0010ON是否可以使用(当此通道没有摄像头时 这里为 OFF)三.
9、信息查询-历史录像文件查询 2:RecordInfo 历史录像文件查询消息。发送次命令给NVR可以获取到NVR设备上所有录像文件的信息,NVR返回的消息格式如下:34020000001320000001 设备ID编号(与通道号一一对应)Camera 011483422881_1483422915录像文件路径 是下面的起止时间换算为数字时Address 1间 发送录像下载时 t字段需要这些数值2017-01-03T13:54:41录像文件起始/结束时间2017-01-03T13:55:150time四.实时音视频/历史录像文件获取 获取摄像头上的实时音视频和历史录像文件,GB28181使用 SI
10、P扩展协议规定的 Invite方法实现。 目前获取实时音视频和历史录像文件都是 Invite方法,只是在 SDP描述中有所区别。实时音视频:历史录像下载:五.注销 客户端向服务器发送 Register命令消息,消息中的 Expire字段设置为0即是注销。六.异常数据处理 当NVR上没有要请求的数据时,消息处理如下:3开发问题及注意事项1.NVR设置注意事项2.给NVR发送消息无响应问题3.NVR通信消息注意事项4.pjsip库使用注意事项 NVR视频通道编码ID必须从通道号D1开始增加,中间不可以有空位; NVR不要开启GB28181服务的 自动添加IPC选项。开启此选项NVR会自动添加 开启
11、了GB28181平台接入服务的摄像头到 视频通道编码ID中去,如果摄像头自己的编码ID和 视频通道编码ID重复后,会导致获取NVR信息有误,影响功能使用。 最开始调研的时候,以为NVR是服务器,使用的是NVR的28181服务,摄像头的平台接入的GB28181服务,并且成功将摄像头注册到了NVR上。导致认为Demo也是作为一个客户端,首先向NVR注册,然后进行数据交互。但是当自己向NVR注册成功后,NVR会索要音视频数据,将Demo当做了摄像头,导致发送任务消息都没有正确回应。在与NVR进行通信时,发送的消息某些字段需要注意:1.设备目录信息查询: To字段中的ID号填写NVR ID号,消息体中
12、 DeviceID填写NVR ID号。Content-Type填写Application/MANSCDP+xml。2.历史录像信息查询: To字段中的ID号填写NVR ID号,消息体中的 DeviceID填写要查询的设备通道编码ID号。Content-Type填写Application/MANSCDP+xml。3.实时音视频: To字段中ID号填写要获取音视频信息的 设备通道编码ID号,SDP中 m字段填写可以接受的音视频类型及本机接收RTP数据端口号,s字段填写Play。在与NVR进行通信时,发送的消息某些字段需要注意:4.历史录像: To字段中ID号填写要获取录像文件所在的 设备通道编码I
13、D号,SDP中 u字段和To字段ID相同,t字段填写要获取录像文件的起始时间和终止时间,s字段为 Download。5.Bye消息的发送: 当想要断开与NVR的连接时,需要向NVR发送Bye消息,发送Bye消息的头部字段必须和发送Invite邀请的头部字段一致,因为同属一个会话。6.断网导致数据发送不正常: 如果Demo发起两个任务(一个实时视频获取/一个历史录像下载)的过程中,NVR断网,短时间内恢复两个任务可以同时恢复,较长时间恢复(1-2分)只恢复录像任务,很长时间恢复两个任务全部失效。pjsip库使用注意事项:1.SDP字段支持: pjsip目前只支持SDP的 o、s、c、b、t、m、a属性,其他字段的支持需要手动添加。2.pjsip SDP媒体信息解析: pjsip媒体信息解析音频支持较多,视频格式的支持需要修改解析SDP函数,大多数摄像头音视频数据的获取全部使用的是 96动态负载类型。3.pjsip额外线程调用库函数: 调用pjsip的库函数的线程必须是使用 pjsip的线程创建函数创建的,或者是将这个额外线程注册到pjsip中去(pj_thread_register),pjsip可以管理这些线程之间的通信问题。