国标GB28181协议客户端开发(三)查询和实时视频画面

本文是《国标GB28181协议设备端开发》系列的第三篇,探讨了信息查询和实时视频在GB28181协议中的应用。首先,介绍了设备目录查询、设备信息查询和设备状态查询三个重要的信息查询功能,并详细解释了它们在协议中的信令交互流程。随后,深入讨论了实时视频的实现方式,包括数据传输协议和传输规范要求。读者将通过本文了解到GB28181协议设备端开发中信息查询和实时视频的关键知识点。

一、设备目录查询

设备目录查询是GB28181协议中的一项重要功能。其通过查询设备目录,获取到当前系统中的所有设备信息。设备目录查询的信令交互流程如下:

  1. 设备端发送查询请求信令(Query Catalog)到设备管理平台;

  2. 设备管理平台接收到请求后,返回设备目录信息(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查询特定设备的详细信息。其信令交互流程如下:

  1. 设备端发送查询请求信令(Query Device)到设备管理平台,携带要查询设备的ID;

  2. 设备管理平台接收到请求后,返回设备详细信息(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>

三、设备状态查询

设备状态查询允许设备端获取设备的实时状态信息。其信令交互流程如下:

  1. 设备端发送查询请求信令(Query Status)到设备管理平台,携带要查询设备的ID;

  2. 设备管理平台接收到请求后,返回设备的状态信息(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协议中最核心的功能之一。其数据传输协议和传输规范要求如下:

  1. 数据传输协议:

    GB28181协议规定了两种数据传输协议,分别是实时传输协议(RTP)和实时控制协议(RTCP)。RTP负责传输实时音视频数据,而RTCP则用于控制数据传输过程中的反馈和控制信息。

  2. 传输规范要求:

    GB28181协议对实时视频的传输做出了一些规范要求。其中包括视频编码格式、分辨率、帧率、码率等参数的定义,以及数据传输时的加密和压缩要求。

通过实时视频功能,设备端可以实时获取到设备摄像头捕捉的图像和音频数据,实现实时监控和远程查看。

下面是一个完整的实时视频信令交互过程:

  1. GB28181平台需要查看实时画面的时候,向目标设备发送实时视频邀请信令(Invite)。

  2. 目标设备接收到邀请信令后,返回确认应答信令(200 OK)给设备管理平台。

  3. GB28181平台接收到确认应答后,返回确认ACK应答信令给设备端,表示实时视频请求成功。

  4. 设备端发送RTP数据包,携带视频和音频数据,通过网络传输给目标设备。

  5. 目标设备接收到RTP数据包,解析并播放视频和音频数据。

  6. 设备端或目标设备中任一方发送终止信令(Bye)表示结束实时视频。

  7. 对方接收到终止信令后,返回确认应答信令(200 OK)。

  8. 双方停止传输媒体数据。

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

合作请加WX:hbstream

合作请加作者hbstream(http://haibindev.cnblogs.com),转载请注明作者和出处

国标GB28181协议客户端开发(三)查询和实时视频画面的更多相关文章

  1. 接口自动化测试:Thrift框架RPC协议客户端开发

    import java.lang.Thread.State;import java.util.Iterator;import java.util.List; import org.apache.thr ...

  2. EasyNVR和EasyDSS云平台联手都不能解决的事情,只有国标GB28181能解决了

    需求痛点 我们经常收到这样一种需求,就是将客户手里的各种类型的网络摄像机IPC和网络硬盘录像机NVR进行统一的整合接入和管理,并进行常规的直播.存储.录像检索和回放等操作,而这个时候我们通常会选择用E ...

  3. node.js实现国标GB28181设备接入的sip服务器解决方案

    方案背景 在介绍GB28181接入服务器的方案前,咱们先大概给大家介绍一下为什么我们选择了用nodejs开发国标GB28181的服务,我大概给很多人介绍过这个方案,大部分都为之虎躯一震,nodejs在 ...

  4. 基于GBT28181:SIP协议组件开发-----------第一篇环境搭建

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3930018.html,qq:1269122125. SIP协议在安 ...

  5. 开源的C#实现WebSocket协议客户端和服务器websocket-sharp组件解析

    很久没有写博客了(至少自己感觉很长时间没有写了),没办法啊,楼主也是需要生活的人啊,这段一直都在找工作什么的.(整天催我代码的人,还望多多谅解啊,我会坚持写我们的项目的,还是需要相信我的,毕竟这是一个 ...

  6. C#实现WebSocket协议客户端和服务器websocket sharp组件实例解析

    看到这篇文章的题目,估计很多人都会问,这个组件是不是有些显的无聊了,说到web通信,很多人都会想到ASP.NET SignalR,或者Nodejs等等,实现web的网络实时通讯.有关于web实时通信的 ...

  7. 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件l ...

  8. 用Jersey为Android客户端开发Restful Web Service

    平时在做Android客户端的时候经常要与服务器之间通信,客户端通过服务端提供的接口获取数据,然后再展示在客户端的界面上,作为Android开发者,我们平时更多的是关注客户端的开发,而对服务端开发的关 ...

  9. (23)go-micro微服务客户端开发(使用负载均衡)

    目录 一 main.go开发 二 客户端代码开发: 三 客户端测试功能 1.发送注册邮件 2.实现注册功能 3.查询用户功能 四 运行项目 五 最后 一 main.go开发 至此,咱们的项目服务端代码 ...

  10. [原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推)

    [原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推) 内部推荐职位 高级JAVA技术经理: 岗位职责: 负责项目管理(技术方向),按照产品开发流 ,带领研发团队,制定 ...

随机推荐

  1. Python最详细的Excel操作方式,

    为 什么要学会使用Excel在机器学习模型的建立中,不得不借助于Excel强大的统计分析能力,这个时候就牵涉到了如何将python直接处理得到的数据存入excel表格当中以及获取表格的数据进行分析,简 ...

  2. Disruptor-源码解读

    前言 Disruptor的高性能,是多种技术结合以及本身架构的结果.本文主要讲源码,涉及到的相关知识点需要读者自行去了解,以下列出: 锁和CAS 伪共享和缓存行 volatile和内存屏障 原理 此节 ...

  3. selenium部分知识点总结

    selenium部分总结 最近写了一个selenium自动化脚本. 基于此总结一些常用的代码 1. 用户输入换行符不终止输入 strings = '' s = input('请输入:(q停止输入)') ...

  4. 如何打开 plist 文件

      plist 文件是一种用于存储应用程序配置信息的文件格式,其中包含应用程序的各种设置和数据.在过去,plist 文件通常是以.plist 格式存储的.然而,随着时间的推移,人们开始使用.plist ...

  5. 【机器学习与深度学习理论要点】11.什么是L1、L2正则化?

    机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作 L1-norm 和L2-norm,中文称作 L1正则化 和 L2正则化,或者 L1范数 和 L2范数.L1正 ...

  6. P2482 [SDOI2010] 猪国杀

    方法论 这是一道复杂的模拟题.由于游戏规则的条目很多,我们需要仔细考虑程序的组织.否则,在编写程序的过程中极容易陷入停滞的状态(不知道下一步应该怎么做),或在发现程序出问题时,难以快速定位到错误点,对 ...

  7. 【Visual Leak Detector】核心源码剖析(VLD 2.5.1)

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇对 VLD 2.5.1 源码做内存泄漏检测的思路进行剖析.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. ...

  8. 2020-10-23:go中channel的创建流程是什么?

    福哥答案2020-10-23:1.元素大小是否小于2的16次方,否则throw.2.对齐检查,否则throw.3.元素大小和容量的乘积不能超出范围,否则panic.4.生成*hchan,设置buf.4 ...

  9. 2021-12-28:给定一个二维数组matrix,matrix[i][j] = k代表: 从(i,j)位置可以随意往右跳<=k步,或者从(i,j)位置可以随意往下跳<=k步, 如果matrix[i]

    2021-12-28:给定一个二维数组matrix,matrix[i][j] = k代表: 从(i,j)位置可以随意往右跳<=k步,或者从(i,j)位置可以随意往下跳<=k步, 如果mat ...

  10. 2021-07-07:股票问题4。给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成

    2021-07-07:股票问题4.给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你最多可以完成 ...