GB28181/NVR介绍1.GB28181/NVR介绍2.NVR设备通道编码ID介绍1GB28181/NVR简介GB28181将SIP定位为联网系统的主要信令基础协议,并利用SIP协议的有关扩展,实现了对非会话业务的兼顾,例如,对报警业务、历史视音频回放、下载等的支持。目前有GB28181-2011和GB28181-2016两个版本。GB28181对联网系统的用户和设备的管理,全部通过一个20位的设备ID号来管理。SIP(会话初始化协议)是在IP网络上进行多媒体通信的应用层控制协议,用来创建,修改和终止有多个参与者的多媒体会话进程。SIP协议使用RTP协议传送音视频数据流,使用SDP协议进行媒体描述。NVR网络硬盘录像机,可以将摄像头绑定在NVR设备上,直接通过NVR即可获取到绑定摄像头的实时音视频,也可以选定时间、指定摄像头进行录像,录像文件存储于NVR设备上。NVR设备通道编码ID介绍通道号和摄像头的IP地址一一对应,即使更换了绑定摄像头通道号是不会变的通道号和视频通道编码ID一一对应GB28181中几乎所有操作都是针对视频通道编码ID进行操作(最后5位可以自行设置)填写服务器地址,即Demo地址信息NVR的设备ID,Demo通过这个ID和地址信息与NVR进行通信开发流程实时视频/历史录像21.SIP具体协议介绍2.注册3.信息查询4.实时视频、历史录像获取5.注销6.异常数据处理一.SIP具体协议介绍(INVITE协议):INVITEsip:34020000001320000007@192.168.15.151:5060SIP/2.0SIP协议命令类型Via:SIP/2.0/UDP192.168.15.118:5061;rport;branch=z9hG4bKPj77458f1bMax-Forwards:70From:sip:34020000001240000001@192.168.15.118;tag=026c1956SIP请求的发送者To:sip:34020000001320000007@192.168.15.151SIP请求的接受者Contact:sip:34020000001240000001@192.168.15.118:5061SIP请求发送者的实际地址Call-ID:172fbd2d-a964-4064-8d36-223fc61336ba和tag共同标志一次完整通信会话CSeq:21896INVITE在Call-ID相同情况下,标志消息顺序编号(当消息没有响应时,会加一重发)Allow:INVITE,ACK,BYE,CANCEL,UPDATEContent-Type:application/sdpSDP负载消息的类型Content-Length:155(SDP消息体)v=0版本号o=3402000000124000000100INIP4192.168.15.118SIP接收者ID会话id版本网络信息s=Play历史录像获取为Downloadc=INIP4192.168.15.118网络信息t=00历史录像获取为14834228811483422915m=video15090RTP/AVP96传输媒体信息audio/video本机接收数据端口传输数据采用方式可以接收媒体类型a=recvonly属性a=rtpmap:96PS/90000可以接受的音视频数据类型一.SIP具体协议介绍(MESSAGE协议):MESSAGEsip:34020000001320000007@192.168.15.151:5060SIP/2.0SIP协议命令类型Via:SIP/2.0/UDP192.168.15.118:5061;rport;branch=z9hG4bKPj77458f1bMax-Forwards:70From:sip:34020000001240000001@192.168.15.118;tag=026c1956SIP请求的发送者To:sip:34020000001110000001@192.168.15.151SIP请求的接受者Contact:sip:34020000001240000001@192.168.15.118:5061SIP请求发送者的实际地址Call-ID:172fbd2d-a964-4064-8d36-223fc61336ba和tag共同标志一次完整通信会话CSeq:21896MESSAGE在Call-ID相同情况下,标志消息顺序编号(当消息没有响应时,会加一重发)Allow:INVITE,ACK,BYE,CANCEL,UPDATEContent-Type:Application/MANSCDP+xmlSDP负载消息的类型Content-Length:155(SDP消息体)?xmlversion=1.0?Query命令类型(查询命令)CmdTypeCatalog/CmdType命令类型(RecordInfo查询历史录像)SN248/SN命令序列号DeviceID34020000001110000001/DeviceID查询设备ID号(NVR设备ID号)/Query二.注册(Register)安全注册GB28181使用的是SIP规定的Register方法实现。当客户端第一次接入时,客户端将持续向Server端发送REGISTER消息,直到Server端回复200OK代表注册成功。每隔一定时间客户端都会再次向服务器注册一遍,防止注册过期导致断开连接。SIP服务器SIP客户端1Register发送注册消息2401Unauthorized需要鉴权200OK成功注册3Register携带认证信息三.信息查询注册成功后,客户端与服务器之间信息查询操作,如目录查询、历史录像文件查看等,GB28181使用SIP扩展协议规定的Message方法实现。目前使用了两种类型的查询命令:1.Catalog设备目录查询消息;2.RecordInfo历史录像文件查询消息。GB28181开发流程SIP客户端(NVR)SIP服务器1发送Message消息,SDP中填写查询命令2200OKNVR向摄像头获取信息5200OK成功接收消息4携带命令查询消息(数据量大的话会分多次返回)摄像头(真正数据来源)3...各种信息处理三.信息查询-设备目录信息查询1:Catalog设备目录查询消息。发送此命令给NVR可以获取到NVR上绑定的摄像头的信息,NVR返回的消息格式如下:ItemDeviceID34020000001320000001/DeviceID设备ID编号(与通道号一一对应)NameCamera01/NameManufacturerManufacturer/ManufacturerModelCamera/ModelOwnerOwner/OwnerCivilCodeCivilCode/CivilCodeAddress192.168.15.3/Address此通道IP地址(当此通道没有摄像头时这里为0.0.0.0)Parental0/ParentalSafetyWay0/SafetyWayRegisterWay1/RegisterWaySecrecy0/SecrecyStatusON/Status是否可以使用(当此通道没有摄像头时这里为OFF)/Item三.信息查询-历史录像文件查询2:RecordInfo历史录像文件查询消息。发送次命令给NVR可以获取到NVR设备上所有录像文件的信息,NVR返回的消息格式如下:ItemDeviceID34020000001320000001/DeviceID设备ID编号(与通道号一一对应)NameCamera01/NameFilePath1483422881_1483422915/FilePath录像文件路径是下面的起止时间换算为数字时AddressAddress1/Address间发送录像下载时t字段需要这些数值StartTime2017-01-03T13:54:41/StartTime录像文件起始/结束时间EndTime2017-01-03T13:55:15/EndTimeSecrecy0/SecrecyTypetime/Type/ItemGB28181开发流程四.实时音视频/历史录像文件获取获取摄像头上的实时音视频和历史录像文件,GB28181使用SIP扩展协议规定的Invite方法实现。目前获取实时音视频和历史录像文件都是Invite方法,只是在SDP描述中有所区别。实时音视频:SIP客户端(NVR)SIP服务器1.发送Invite消息携带SDP消息体3.200OK携带SDP消息体包含音视频信息6.BYE断开Invite会话7.200OK摄像头(真正数据来源)2.各种信息处理...4.ACK确认5.音视频数据(音视频负载PS格式)历史录像下载:SIP客户端(NVR)SIP服务器1.发送Invite消息携带SDP消息体3.200OK携带SDP消息体包含音视频信息8.BYE断开Invite会话9.200OK摄像头(真正数据来源)2.各种信息处理...4.ACK确认5.音视频数据(音视频负载PS格式)6.Message文件发送完成7.200OK10.断开连接操作...五.注销客户端向服务器发送Register命令消息,消息中的Expire字段设置为0即是注销。SIP服务器SIP客户端(NVR)1.Register发送注销信息Expire字段设置为02.200OK成功注销六.异常数据处理当NVR上没有要请求的数据时,消息处理如下:SIP客户端(NVR)SIP服务器1.发送Invite消息携带SDP消息体2.400BadRequest错误的请求3.ACK确认3开发问题及注意事项1.NVR设置注意事项2.给NVR发送消息无响应问题3.NVR通信消息注意事项4.pjsip库使用注意事项一.NVR设置注意事项NVR视频通道编码ID必须从通道号D1开始增加,中间不可以有空位;NVR不要开启GB28181服务的自动添加IPC选项。开启此选项NVR会自动添加开启了GB28181平台接入服务的摄像头到视频通道编码ID中去,如果摄像头自己的编码ID和视频通道编码ID重复后,会导致获取NVR信息有误,影响功能使用。二.给NVR发送消息无响应问题最开始调研的时候,以为NVR是服务器,使用的是NVR的28181服务,摄像头的平台接入的GB28181服务,并且成功将摄像头注册到了NVR上。导致认为Demo也是作为一个客户端,首先向NVR注册,然后进行数据交互。但是当自己向NVR注册成功后,NVR会索要音视频数据,将Demo当做了摄像头,导致发送任务消息都没有正确回应。三.NVR通信消息注意事项在与NVR进行通信时,发送的消息某些字段需要注意:1.设备目录信息查询:To字段中的ID号填写NVRID号,消息体中DeviceID填写NVRID号。Content-Type填写Application/MANSCDP+xml。2.历史录像信息查询:To字段中的ID号填写NVRID号,消息体中的DeviceID填写要查询的设备通道编码ID号。Content-Type填写Application/MANSCDP+xml。3.实时音视频:To字段中ID号填写要获取音视频信息的设备通道编码ID号,SDP中m字段填写可以接受的音视频类型及本机接收RTP数据端口号,s字段填写Play。三.NVR通信消息注意事项在与NVR进行通信时,发送的消息某些字段需要注意:4.历史录像:To字段中ID号填写要获取录像文件所在的设备通道编码ID号,SDP中u字段和To字段ID相同,t字段填写要获取录像文件的起始时间和终止时间,s字段为Download。5.Bye消息的发送:当想要断开与NVR的连接时,需要向NVR发送B