国标GB28181协议客户端开发(三)查询和实时视频画面
本文是《国标GB28181协议设备端开发》系列的第三篇,探讨了信息查询和实时视频在GB28181协议中的应用。首先,介绍了设备目录查询、设备信息查询和设备状态查询三个重要的信息查询功能,并详细解释了它们在协议中的信令交互流程。随后,深入讨论了实时视频的实现方式,包括数据传输协议和传输规范要求。读者将通过本文了解到GB28181协议设备端开发中信息查询和实时视频的关键知识点。
一、设备目录查询
设备目录查询是GB28181协议中的一项重要功能。其通过查询设备目录,获取到当前系统中的所有设备信息。设备目录查询的信令交互流程如下:
- 设备端发送查询请求信令(Query Catalog)到设备管理平台;
- 设备管理平台接收到请求后,返回设备目录信息(Catalog)给设备端。
通过设备目录查询,设备端能够获取到系统中所有设备的基本信息,包括设备ID、名称、类型等。
GB28181平台 -> 设备端
MESSAGE sip:34020000001110000001@3402000000 SIP/2.0 From: <sip:34020000002000000001@3402000000>;tag=bccedfd000105 To: <sip:34020000001110000001@3402000000> Content-Length: 127 CSeq: 5 MESSAGE Route: <sip:34020000001110000001> Call-ID: 12345678900105 Via: SIP/2.0/UDP 192.168.1.54:5060;wlsscid=377aa9afcf1b36f;branch=123133532300105 Content-Type: Application/MANSCDP+xml Max-Forwards: 70 <?xml version="1.0"?> <Query> <CmdType>Catalog</CmdType> <SN>2</SN> <DeviceID>34020000001110000001</DeviceID> </Query>
设备端 -> GB28181平台
MESSAGE sip:34020000002000000001@192.168.1.54:5060 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.54:54193;branch=z9hG4bK649bcb2c From: <sip:34020000001110000001@3402000000> To: <sip:34020000002000000001@192.168.1.54:5060> Call-ID: 000072AE00002CD6@192.168.1.54 CSeq: 3 MESSAGE Max-Forwards: 70 User-Agent: HTSIP UA/2.1 Content-Type: Application/MANSCDP+xml Content-Length: 558 <?xml version="1.0"?> <Response> <CmdType>Catalog</CmdType> <SN>2</SN> <DeviceID>34020000001110000001</DeviceID> <SumNum>1</SumNum> <DeviceList Num="1"> <Item> <DeviceID>34020000001310000001</DeviceID> <Name>34020000001110000001</Name> <Manufacturer>HBStream</Manufacturer> <Model>IP Camera</Model> <Owner>Owner</Owner> <CivilCode>CivilCode</CivilCode> <Address>192.168.1.54</Address> <Parental>0</Parental> <ParentID>34020000001110000001</ParentID> <RegisterWay>1</RegisterWay> <Secrecy>0</Secrecy> <Status>ON</Status> </Item> </DeviceList> </Response>
二、设备信息查询
设备信息查询允许设备端通过设备ID查询特定设备的详细信息。其信令交互流程如下:
- 设备端发送查询请求信令(Query Device)到设备管理平台,携带要查询设备的ID;
- 设备管理平台接收到请求后,返回设备详细信息(Device Info)给设备端。
设备信息查询使设备端能够获取到特定设备的更多信息,如设备的制造商、型号、固件版本等。
GB28181平台 -> 设备端
MESSAGE sip:34020000001110000001@3402000000 SIP/2.0 From: <sip:34020000002000000001@3402000000>;tag=bccedfd000104 To: <sip:34020000001110000001@3402000000> Content-Length: 134 CSeq: 5 MESSAGE Route: <sip:34020000001110000001> Call-ID: 12345678900104 Via: SIP/2.0/UDP 192.168.1.54:5060;wlsscid=377aa9afcf1b36f;branch=123133532300104 Content-Type: Application/MANSCDP+xml Max-Forwards: 70 <?xml version="1.0"?> <Query> <CmdType>DeviceInfo</CmdType> <SN>17430</SN> <DeviceID>34020000001110000001</DeviceID> </Query>
设备端 -> GB28181平台
MESSAGE sip:34020000002000000001@192.168.1.54:5060 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.54:54193;branch=z9hG4bK649bcb2c From: <sip:34020000001110000001@3402000000> To: <sip:34020000002000000001@192.168.1.54:5060> Call-ID: 00003D6C00004AE1@192.168.1.54 CSeq: 2 MESSAGE Max-Forwards: 70 User-Agent: HTSIP UA/2.1 Content-Type: Application/MANSCDP+xml Content-Length: 308 <?xml version="1.0"?> <Response> <CmdType>DeviceInfo</CmdType> <SN>17430</SN> <DeviceID>34020000001110000001</DeviceID> <DeviceName>HbsDevice</DeviceName> <Result>OK</Result> <Manufacturer>HBStream</Manufacturer> </Response>
三、设备状态查询
设备状态查询允许设备端获取设备的实时状态信息。其信令交互流程如下:
- 设备端发送查询请求信令(Query Status)到设备管理平台,携带要查询设备的ID;
- 设备管理平台接收到请求后,返回设备的状态信息(Status Info)给设备端。
设备状态查询可获得设备的在线状态、网络连接状态等关键信息,帮助设备端监控和管理设备。
GB28181平台 -> 设备端
MESSAGE sip:34020000001110000001@3402000000 SIP/2.0 From: <sip:34020000002000000001@3402000000>;tag=bccedfd000106 To: <sip:34020000001110000001@3402000000> Content-Length: 134 CSeq: 5 MESSAGE Route: <sip:34020000001110000001> Call-ID: 12345678900106 Via: SIP/2.0/UDP 192.168.1.54:5060;wlsscid=377aa9afcf1b36f;branch=123133532300106 Content-Type: Application/MANSCDP+xml Max-Forwards: 70 <?xml version="1.0"?> <Query> <CmdType>DeviceStatus</CmdType> <SN>248</SN> <DeviceID>34020000001110000001</DeviceID> </Query>
设备端 -> GB28181平台
MESSAGE sip:34020000002000000001@192.168.1.54:5060 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.54:54193;branch=z9hG4bK649bcb2c From: <sip:34020000001110000001@3402000000> To: <sip:34020000002000000001@192.168.1.54:5060> Call-ID: 00005F9000006952@192.168.1.54 CSeq: 4 MESSAGE Max-Forwards: 70 User-Agent: HTSIP UA/2.1 Content-Type: Application/MANSCDP+xml Content-Length: 295 <?xml version="1.0"?> <Response> <CmdType>DeviceStatus</CmdType> <SN>248</SN> <DeviceID>34020000001110000001</DeviceID> <Result>OK</Result> <Online>ONLINE</Online> <Status>OK</Status> <Encode>ON</Encode> <Record>OFF</Record> <DeviceTime>2023-06-28T13:54:52</DeviceTime> </Response>
四、实时视频
实时视频是GB28181协议中最核心的功能之一。其数据传输协议和传输规范要求如下:
- 数据传输协议:
GB28181协议规定了两种数据传输协议,分别是实时传输协议(RTP)和实时控制协议(RTCP)。RTP负责传输实时音视频数据,而RTCP则用于控制数据传输过程中的反馈和控制信息。 - 传输规范要求:
GB28181协议对实时视频的传输做出了一些规范要求。其中包括视频编码格式、分辨率、帧率、码率等参数的定义,以及数据传输时的加密和压缩要求。
通过实时视频功能,设备端可以实时获取到设备摄像头捕捉的图像和音频数据,实现实时监控和远程查看。
下面是一个完整的实时视频信令交互过程:
- GB28181平台需要查看实时画面的时候,向目标设备发送实时视频邀请信令(Invite)。
- 目标设备接收到邀请信令后,返回确认应答信令(200 OK)给设备管理平台。
- GB28181平台接收到确认应答后,返回确认ACK应答信令给设备端,表示实时视频请求成功。
- 设备端发送RTP数据包,携带视频和音频数据,通过网络传输给目标设备。
- 目标设备接收到RTP数据包,解析并播放视频和音频数据。
- 设备端或目标设备中任一方发送终止信令(Bye)表示结束实时视频。
- 对方接收到终止信令后,返回确认应答信令(200 OK)。
- 双方停止传输媒体数据。
GB28181平台 -> 设备端, INVITE
INVITE sip:34020000001310000001@3402000000 SIP/2.0 Call-ID: helloVideo CSeq: 1 INVITE From: <sip:34020000002000000001@3402000000>;tag=bccedfd0111 To: <sip:34020000001110000001@3402000000> Max-Forwards: 70 Contact: <sip:34020000001310000001@3402000000> Via: SIP/2.0/UDP 192.168.1.54:5060;branch=z9hG4bKee5c5d98-bff9-4f3000109 Content-Type: application/sdp Content-Length: 225 v=0 o=34020000001310000001 0 0 IN IP4 192.168.1.54 s=Play c=IN IP4 192.168.1.54 t=0 0 m=video 6000 RTP/AVP 96 98 97 a=recvonly a=rtpmap:96 PS/90000 a=rtpmap:98 H264/90000 a=rtpmap:97 MPEG4/90000 y=0100000001 f=
设备端 -> GB28181平台,200OK
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.1.54:5060;branch=z9hG4bKee5c5d98-bff9-4f3000109 From: <sip:34020000002000000001@3402000000>;tag=bccedfd0111 To: <sip:34020000001110000001@3402000000>;tag=2ea6bb3 Contact: <sip:34020000001110000001@3402000000> Call-ID: helloVideo CSeq: 1 INVITE Max-Forwards: 70 Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,REFER,UPDATE,INFO Supported: timer Session-Expires: 200;refresher=uac Server: Happytime Agent Ver 1.0 Content-Type: application/sdp Content-Length: 151 v=0 o=34020000001110000001 0 0 IN IP4 192.168.1.54 s=Play c=IN IP4 192.168.1.54 t=0 0 m=video 19002 RTP/AVP 96 a=rtpmap:96 PS/90000 a=sendonly
GB28181平台 -> 设备端,ACK
ACK sip:34020000001310000001@3402000000 SIP/2.0 Call-ID: helloVideo CSeq: 1 ACK From: <sip:34020000002000000001@3402000000>;tag=bccedfd0111 To: <sip:34020000001110000001@3402000000> Max-Forwards: 70 Via: SIP/2.0/UDP 192.168.1.54:5060;branch=z9hG4bKee5c5d98-00110 Content-Length: 0
BYE
BYE sip:34020000001310000001@3402000000 SIP/2.0 From: <sip:34020000002000000001@3402000000>;tag=bccedfd0111 To: sip:34020000001110000001@3402000000;tag=2ea6bb3 CSeq: 2 BYE Call-ID: helloVideo Via: SIP/2.0/UDP 192.168.1.54:5060;branch=z9hG4bKee5c5d98-00111 Max-Forwards: 70 Content-Length: 0