GB28181状态信息报送解读及Android端国标设备接入技术实现

今天主要聊聊GB/T28181状态信息报送这块,先回顾下协议规范相关细节,然后再针对代码实现,做个简单的说明。

状态消息报送基本要求

当源设备(包括网关、SIP设备、SIP客户端或联网系统)发现工作异常时,应立即向本 SIP监控域 的SIP服务器发送状态信息;无异常时,应定时向本SIP监控域的SIP服务器发送状态信息。

SIP设备 29 GB/T28181—2016宜在状态信息中携带故障子设备描述信息,详见 A.2.5状态信息报送。

状态信息报送采用IETFRFC 3428中定义的方法 Message实现。

通过周期性的状态信息报送,实现注册服务器与源设备之间的状态检测即心跳机制。 心跳发送方、接收方需统一配置“心跳间隔”参数,按照“心跳间隔”定时发送心跳消息,默认心跳间 隔60s。

心跳发送方、接收方需统一配置“心跳超时次数”参数,心跳消息连续超时达到“心跳超时次数” 则认为对方下线,默认心跳超时次数3次。

心跳接收方在心跳发送方上线状态下检测到心跳消息连续超时达到商定次数则认为心跳发送方离 线;心跳发送方在心跳接收方上线状态下检测到心跳消息响应消息连续超时达到商定次数则认为心跳 接收方离线。

命令流程

 

命令流程描述如下:

a) 1:源设备向SIP服务器发送设备状态信息报送命令。设备状态信息报送命令采用 Message方 法携带;

b) 2:SIP服务器收到命令后返回200OK。

协议接口

Message消息头 Content-type头域为 Content-type:Application/MANSCDP+xml。 状态信息报送命令采用 MANSCDP协议格式定义,详细描述见 A.2.5状态信息报送。

状态信 息 报 送 命 令 应 包 括 命 令 类 型 (CmdType)、设 备/系 统 编 码 (DeviceID)、是 否 正 常 工 作 (Status)等,采用 Message方法的消息体携带。 Message消息的成功和错误应答均无消息体。

技术实现

本文就以我们开发的Android平台GB28181设备接入模块为例,做个简单的说明,先说参数定义:

private int gb28181_heartbeat_interval_    = 20; // 心跳间隔GB28181默认是60, 目前调整到20秒
private int gb28181_heartbeat_count_       = 3; // 心跳间隔3次失败,表示和服务器断开了

在initGB28181Agent()的时候,设置下去:

// GB28181配置
gb28181_agent_.config(gb28181_reg_expired_, gb28181_heartbeat_interval_, gb28181_heartbeat_count_);

周期性的心跳,携带的关键信息如下:

MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.120:5070;rport;branch=z9hG4bK1200121904
From: <sip:34020000002000000003@3402000000>;tag=858896904
To: <sip:34020000002000000001@3402000000>
Call-ID: 1700090587
CSeq: 20 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: IP Camera
Content-Length:   177<?xml version="1.0" encoding="GB2312"?>
<Notify>
<CmdType>Keepalive</CmdType>
<SN>33</SN>
<DeviceID>34020000002000000003</DeviceID>
<Status>OK</Status>
<Info>
</Info>
</Notify>

异常处理如下,如果有语音广播,需要停掉GB28181的语音广播,数据发送也停掉:

/** CameraPublishActivity.java* 心跳异常处理** WebSite: https://daniusdk.com* Github: https://github.com/daniulive/SmarterStreaming*/
@Override
public void ntsOnHeartBeatException(int exceptionCount,  String lastExceptionInfo) {Log.e(TAG, "ntsOnHeartBeatException heart beat timeout count reached, count:" + exceptionCount+", exception info:" + (lastExceptionInfo!=null?lastExceptionInfo:""));// 10毫秒后,停止信令, 然后重启handler_.postDelayed(new Runnable() {@Overridepublic void run() {Log.i(TAG, "gb28281_heart_beart_timeout");stopAudioPlayer();destoryRTPReceiver();gb_broadcast_source_id_ = null;gb_broadcast_target_id_ = null;btnGB28181AudioBroadcast.setText("GB28181语音广播");btnGB28181AudioBroadcast.setEnabled(false);stopGB28181Stream();destoryRTPSender();if (gb28181_agent_ != null) {Log.i(TAG, "gb28281_heart_beart_timeout sip stop");gb28181_agent_.stop();Log.i(TAG, "gb28281_heart_beart_timeout sip start");gb28181_agent_.start();}}},10);
}

总的来说,状态信息报送流程比较简单,Message消息也非常容易组织,没有非常特别需要注意的地方,我们更需要关注的是心跳状态反馈,特别是异常处理。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IE浏览器怎么设置兼容性 添加兼容站点方法

IE浏览器是我们工作和生活中应用最广泛的浏览器&#xff0c;其安全、便捷是它的特点之一。不过这个浏览器在浏览部分网页的时候&#xff0c;会出现图片不刷新的情况&#xff0c;今天小编就带来了解决方法&#xff0c;告诉大家IE浏览器怎么设置兼容性。 1、首先点击IE浏览器右上…

GB28181设备接入端如何实现校时?

在探讨这个问题之前&#xff0c;我们先看看GB/T28181-2016官方文档怎么说的&#xff0c;9.10.1章节校时基本要求提到&#xff1a; 联网内设备支持基于SIP方式或 NTP方式的网络校时功能&#xff0c;标准时间为北京时间。 SIP方式校时见本节具体描述&#xff1b;NTP(见IETFRFC2…

Win7运行窗口的打开方法

Win7系统中运行窗口可谓是最常用的功能之一&#xff0c;可以帮助我们快速执行程序&#xff0c;在系统有问题时经常运用其协助解决。有用户问到运行窗口在哪?如何打开?找不到怎么办?其实方法不难&#xff0c;下面小编就跟大家详细介绍一下Win7运行窗口的打开方法。 Win7运行…

如何在Unity下采集音视频实现轻量级RTSP服务(类似于IPC)

好多开发者在做虚拟仿真、VR教育等场景的时候&#xff0c;遇到个问题&#xff0c;想把头显里面的画面在内网环境下低延迟的同步出来&#xff0c;又不想单独部署流媒体服务器。为此&#xff0c;我们在Unity下&#xff0c;添加了轻量级RTSP服务模块&#xff0c;通过头显端启动个轻…

【Datawhale 大模型基础】第十一章 环境影响

第十一章 环境影响 This blog is based on datawhale files and a paper. The initial consideration revolves around the potential positive or negative direct impact on the environment. Other transformative technological advancements, like the metaverse, are li…

Win7笔记本如何调整屏幕亮度

长期使用电脑的时候会因为视觉疲劳感觉屏幕亮度过高&#xff0c;需要对其调整来缓解。PC用户方法很简单&#xff0c;只需在显示器上点击按钮进行调整即可&#xff0c;那么Win7笔记本如何调整屏幕亮度?其实Win7系统本身有考虑到这个问题&#xff0c;在系统中有专门针对此问题的…

Android GB28181接入端实时位置订阅和上报之-如何获取当前经纬度

我们在做Android平台GB28181的时候&#xff0c;其中实时位置(MobilePosition)订阅和上报这块&#xff0c;涉及到实时经纬度的获取&#xff0c;特别是执法记录、车载系统的那个等场景&#xff0c;几乎就是标配。 今天主要是分享一段实时获取位置的代码&#xff1a; /** Camera…

Win7系统防火墙设置不了怎么办

防火墙是Windows系统中一项重要的防护措施&#xff0c;可以帮助你的电脑阻挡病毒和恶意软件&#xff0c;确保系统安全。近来有用户反馈win7系统的防火墙无法设置&#xff0c;Win7系统防火墙设置不了怎么办?无法设置说明系统设置被更改&#xff0c;防火墙功能应该是被禁用了&am…

如何实现Android平台GB28181设备对接Camera2数据

技术背景 在写如何实现Android平台GB28181设备对接Camera2数据说明之前&#xff0c;我在前两年的blog就有针对camera2的RTMP直播推送模块做过技术分享&#xff1a; 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2), 之前使用…

Win7性能信息和工具在哪打开

在Win7系统中&#xff0c;有一个性能信息和工具&#xff0c;我们可以通过这个功能中的高级工具&#xff0c;查看到关于系统的关键信息&#xff0c;全面了解系统的运行状况&#xff0c;不过&#xff0c;对于不熟悉电脑的用户来讲&#xff0c;可能连性能信息和工具在哪都不清楚&a…

Android平台实现mp4文件实时推送RTMP|轻量级RTSP服务|GB28181平台

好多开发者有这样的诉求&#xff0c;想把本地录制的MP4文件&#xff0c;以实时流数据的形式&#xff0c;推送到RTMP服务器&#xff0c;注入轻量级RTSP服务&#xff0c;或者对接到GB28181平台&#xff0c;这块前几年我们就有对接。 本次以MediaExtractor为例&#xff0c;先利用…

Win10系统字体太小的调整设置教程

Win7系统与Win10系统还是差别挺多的&#xff0c;一些小伙伴们刚开始使用Win10系统对很多功能都了解。有的小伙伴就遇到了不适应字体的大小&#xff0c;但是又不知道Win10字体太小怎么调整&#xff0c;下面告诉大家Win10系统字体太小的调整设置教程。 Win10系统字体太小的调整设…

Android平台GB28181设备接入端本地SIP端口被占用或屏蔽怎么办?

好多开发者或厂商&#xff0c;对Android平台GB28181接入模块的定位&#xff0c;大多是IPC国标流程打通模拟&#xff0c;基于这个目的&#xff0c;很难按照标准SPEC规范实现Android平台GB28181设备接入&#xff0c;我们在跟第三方国标平台厂商对接时发现&#xff0c;部分公司&am…

Android平台GB28181设备接入端如何实现本地录像?

实现Android平台GB28181设备接入的时候&#xff0c;有个功能点不可避免&#xff0c;那就是本地录像&#xff0c;实际上&#xff0c;在实现GB28181设备接入模块之前&#xff0c;我们前些年做RTMP推送和轻量级RTSP服务的时候&#xff0c;早已经实现了本地录像功能。 本地录像功能…

win10笔记本电脑合上屏幕休眠该怎么设置

现在很多用户经常外出的都喜欢轻便一点的电脑&#xff0c;所以这类人群为自己选择的电脑就会是笔记本电脑。使用笔记本电脑有一个特点就是如您合上电脑屏幕&#xff0c;它就会自动锁屏&#xff0c;那么win10笔记本电脑合上屏幕休眠该怎么设置呢?想要设置的用户一起来看看吧。 …

Android平台GB28181设备接入端实现实时快照

Android平台GB28181设计开发的时候&#xff0c;有个功能必不可少的&#xff1a;实时快照&#xff0c;特别是用于执法记录仪等场景下&#xff0c;用于图像留底或分析等考量。 实时快照的实现并不难&#xff0c;目前实现有两种方式&#xff0c;一种是拿到数据&#xff08;比如摄…

uc浏览器怎么看历史记录 uc浏览器网页历史记录查看方法

很多用户发现UC浏览器的历史记录查看不了&#xff0c;怎么找也找不到&#xff0c;不要急&#xff0c;它只是换了个位置而已&#xff0c;那么下面小编就来跟大家说一说UC浏览器网页历史记录查看方法。 方法一&#xff1a;点击右上角的UC图标&#xff0c;在弹出来的菜单中你就会…

Win11如何跳过开机更新 Win11跳过开机更新教程

已经有很多用户更新升级到win11系统了吧&#xff0c;但是有用户发现偶尔开机会出现自动更新&#xff0c;导致无法及时开机使用&#xff0c;那win11统如何跳过开机更新呢?可以先使用电源键取消这次更新&#xff0c;然后进入系统取消更新检测就可以了。 win11怎么跳过开机更新&…

Android国标接入端如何播放GB28181平台端语音广播数据

GB28181语音广播这块&#xff0c;我们依据GB/T28181-2016针对流程和实例代码&#xff0c;做过详细的描述&#xff0c;本次主要是探讨下&#xff0c;广播数据过来后&#xff0c;如何处理。 鉴于我们之前有非常成熟的RTMP|RTSP低延迟播放模块&#xff0c;语音广播数据过来后&…

Win11和Win10有什么区别 Win11和Win10区别对比

Win11是微软全新一代操作系统&#xff0c;在界面和功能上和Win10相比还是有不少区别的&#xff0c;如果你还在犹豫要不要升级Win11的话&#xff0c;那么不妨来看看Win11和Win10之间有哪些区别吧。 1、 开始菜单&#xff1a;简单的图标&#xff0c;没有动态磁贴 Windows 11 的…