GB28181智能安全帽方案探究及技术实现
什么是智能安全帽?
智能安全帽是一种集成先进科技的安全帽,可基于GB28181规范,适用于铁路巡检、电力、石油化工等高风险行业的作业人员,以及消防、救援等紧急情况下的安全防护。

智能安全帽通常具有以下功能:
- 实时定位:内置GPS定位模块,可以实时定位作业人员的位置,并及时上报到指挥中心,防止迷路或失踪。
- 无线通信:内置无线通信模块,可以与指挥中心进行通信,方便作业人员与指挥中心的联系和协调。
- 碰撞检测:内置碰撞检测模块,可以实时检测作业人员的头部撞击情况,及时发出警报或求救信号。
- 温度检测:内置温度检测模块,可以实时检测作业环境的温度,防止高温中暑等安全问题。
- 照明功能:内置LED灯,可以为作业人员提供照明,方便夜间或低光照环境下的作业。
- 信息显示:在安全帽上设置液晶屏幕或LED显示屏,可以显示作业人员的位置、通信状态、温度等信息。
技术实现
早期的智能安全帽,会基于嵌入式linux,随着这块技术发展,考虑到易用性等各方面因素,目前主流的智能安全帽,大多技术Android平台实现,本文以Android平台为例,介绍下,智能安全帽需要支持的核心功能。
先说技术架构:

功能设计:
- [视频格式]H.264/H.265(Android H.265硬编码);
- [音频格式]G.711 A律、AAC;
- [音量调节]Android平台采集端支持实时音量调节;
- [H.264硬编码]支持H.264特定机型硬编码;
- [H.265硬编码]支持H.265特定机型硬编码;
- [软硬编码参数配置]支持gop间隔、帧率、bit-rate设置;
- [软编码参数配置]支持软编码profile、软编码速度、可变码率设置;
- 支持纯视频、音视频PS打包传输;
- 支持RTP OVER UDP和RTP OVER TCP被动模式(TCP媒体流传输客户端);
- 支持信令通道网络传输协议TCP/UDP设置;
- 支持注册、注销,支持注册刷新及注册有效期设置;
- 支持设备目录查询应答;
- 支持心跳机制,支持心跳间隔、心跳检测次数设置;
- 支持移动设备位置(MobilePosition)订阅和通知;
- 支持语音广播;
- 支持语音对讲;
- 支持云台控制和预置位查询;
- [实时水印]支持动态文字水印、png水印;
- [镜像]Android平台支持前置摄像头实时镜像功能;
- [实时静音]支持实时静音/取消静音;
- [实时快照]支持实时快照;
- [降噪]支持环境音、手机干扰等引起的噪音降噪处理、自动增益、VAD检测;
- [外部编码前视频数据对接]支持YUV数据对接;
- [外部编码前音频数据对接]支持PCM对接;
- [外部编码后视频数据对接]支持外部H.264数据对接;
- [外部编码后音频数据对接]外部AAC数据对接;
- [扩展录像功能]支持和录像模块组合使用,录像相关功能。
以大牛直播SDK的Android平台GB28181设备接入模块为例,如果需要对接到GB28181智能安全帽,需要关注信令和媒体数据两块部分,这里说说大概的设计思路:
GBSIPAgentListener主要系GB28181注册、心跳、DevicePosition等,如注册成功、注册超时、注册网络传输层错误、心跳异常、设备位置请求处理:
public interface GBSIPAgentListener
{/*注册成功* @param dateString: 服务器日期,用来校准设备端时间,用户自行决定是否校准设备时间*/void ntsRegisterOK(String dateString);/**注册超时*/void ntsRegisterTimeout();/**注册网络传输层异常*/void ntsRegisterTransportError(String errorInfo);/**心跳达到异常次数*/void ntsOnHeartBeatException(int exceptionCount, String lastExceptionInfo);/** 设备位置请求, 这个主要用在移动设备位置订阅上* @param interval 请求间隔, 单位是毫秒*/void ntsOnDevicePositionRequest(String deviceId, int interval);
}
GBSIPAgentPlayListener主要系GB28181的Invite、Ack、Bye等处理:
public interface GBSIPAgentPlayListener {/**收到s=Play的实时视音频点播*/void ntsOnInvitePlay(String deviceId, SessionDescription sessionDescription);/**发送play invite response 异常*/void ntsOnPlayInviteResponseException(String deviceId, int statusCode, String errorInfo);/** 收到CANCEL play INVITE请求*/void ntsOnCancelPlay(String deviceId);/** 收到Ack*/void ntsOnAckPlay(String deviceId);/** 收到Bye*/void ntsOnByePlay(String deviceId);/** 不是在收到BYE Message情况下, 终止Play*/void ntsOnTerminatePlay(String deviceId);/** Play会话对应的对话终止, 一般不会出发这个回调,目前只有在响应了200K, 但在64*T1时间后还没收到ACK,才可能会出发收到这个, 请做相关清理处理*/void ntsOnPlayDialogTerminated(String deviceId);
}
GBSIPAgentAudioBroadcastListener主要系GB28181语音广播处理相关,如有语音广播相关需求,可参照demo实例实现:
public interface GBSIPAgentAudioBroadcastListener {/**收到语音广播通知*/void ntsOnNotifyBroadcastCommand(String fromUserName, String fromUserNameAtDomain, String sn, String sourceID, String targetID);/**需要准备接受语音广播的SDP内容*/void ntsOnAudioBroadcast(String commandFromUserName, String commandFromUserNameAtDomain, String sourceID, String targetID);/**音频广播, 发送Invite请求异常*/void ntsOnInviteAudioBroadcastException(String sourceID, String targetID, String errorInfo);/**音频广播, 等待Invite响应超时*/void ntsOnInviteAudioBroadcastTimeout(String sourceID, String targetID);/**音频广播, 收到Invite消息最终响应*/void ntsOnInviteAudioBroadcastResponse(String sourceID, String targetID, int statusCode, SessionDescription sessionDescription);/** 音频广播, 收到BYE Message*/void ntsOnByeAudioBroadcast(String sourceID, String targetID);/** 不是在收到BYE Message情况下, 终止音频广播*/void ntsOnTerminateAudioBroadcast(String sourceID, String targetID);
}
GBSIPAgentDeviceControlListener主要系GB28181设备控制相关,比如远程启动、云台控制:
public interface GBSIPAgentDeviceControlListener {/** 收到远程启动控制命令*/void ntsOnDeviceControlTeleBootCommand(String deviceId, String teleBootValue);/** 云台控制*/void ntsOnDeviceControlPTZCmd(String deviceId, String typeValue);
}
GBSIPAgentQueryCommandListener主要系GB28181查询命令,如预置位查询:
public interface GBSIPAgentQueryCommandListener {/** 设备预置位查询*/void ntsOnDevicePresetQueryCommand(String fromUserName, String fromUserNameAtDomain, String sn, String deviceId);
}
GBSIPAgentTalkListener主要系GB28181语音对讲相关处理:
public interface GBSIPAgentTalkListener {/**收到s=Talk 语音对讲*/void ntsOnInviteTalk(String deviceId, SessionDescription sessionDescription);/**发送talk invite response 异常*/void ntsOnTalkInviteResponseException(String deviceId, int statusCode, String errorInfo);/** 收到CANCEL Talk INVITE请求*/void ntsOnCancelTalk(String deviceId);/** 收到Ack*/void ntsOnAckTalk(String deviceId);/** 收到Bye*/void ntsOnByeTalk(String deviceId);/** 不是在收到BYE Message情况下, 终止Talk*/void ntsOnTerminateTalk(String deviceId);/** Talk会话对应的对话终止, 一般不会出发这个回调,目前只有在响应了200K, 但在64*T1时间后还没收到ACK,才可能会出发收到这个, 请做相关清理处理*/void ntsOnTalkDialogTerminated(String deviceId);
}
总结
除信令交互外,媒体数据编码、传输,这里就不再赘述。GB28181智能安全帽是一种集成多种先进科技的安全帽,可以为作业人员提供实时定位、无线通信、碰撞检测、温度检测、照明功能和信息显示等多种安全保障,提高作业安全性和工作效率。
相关文章:
GB28181智能安全帽方案探究及技术实现
什么是智能安全帽? 智能安全帽是一种集成先进科技的安全帽,可基于GB28181规范,适用于铁路巡检、电力、石油化工等高风险行业的作业人员,以及消防、救援等紧急情况下的安全防护。 智能安全帽通常具有以下功能: 实时…...
【css】解决元素浮动溢出问题
如果一个元素比包含它的元素高,并且它是浮动的,它将“溢出”到其容器之外:然后可以向包含元素添加 overflow: auto;,来解决此问题: 代码: <!DOCTYPE html> <html> <head> <style>…...
SOC FPGA之流水灯设计
一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包,为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行,进入到破解器所在文…...
无涯教程-Lua - Iterators(迭代器)
迭代器是一种构造,使您可以遍历所谓的集合或集合的元素。在Lua中,这些集合通常引用表,这些表用于创建各种数据结构(如数组)。 通用迭代器 通用的 for 迭代器提供集合中每个元素的键值对。下面给出一个简单的示例。 array{"Lua",…...
HTML+CSS+JavaScript:实现B站评论发布效果
一、需求 1、用户输入内容,输入框左下角实时显示输入字数 2、为避免用户输入时在内容左右两端误按多余的空格,在发送评论时,检测用户输入的内容左右两端是否带有空格,若有空格,发布时自动取消左右两端的空格 3、若用…...
实战 - 利用 ThreadLocal 线程局部变量实现数据缓存
文章目录 1. 利用 ThreadLocal 缓存 AssetBranchCache 数据1. 定义 AssetBranchCache 类2. 定义 BranchContext 类操作 AssetBranchCache 对象3. 配置拦截器实时更新和清除缓存数据4. 定义 SaasThreadContextDataHolderBranch 类持有 AssetBranchCache 对象5. 定义 SaasThreadC…...
wxwidgets Ribbon使用简单实例
// RibbonSample.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <wx/wx.h> #include "wx/wxprec.h" #include "wx/app.h" #include "wx/frame.h" #include "wx/textctrl.h" #include "…...
2023年第四届“华数杯”数学建模思路 - 案例:最短时间生产计划安排
文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 0 赛题思路 (赛题出来以后第一时间在CSDN分享) 最短时间生产计划模型 该模型出现在好几个竞赛赛题上&#x…...
LeetCode404. 左叶子之和
404. 左叶子之和 文章目录 [404. 左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/)一、题目二、题解方法一:递归方法二:迭代 一、题目 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1: 输入: root [3,9…...
Nginx 高性能内存池 ----【学习笔记】
跟着这篇文章学习: c代码实现一个高性能内存池(超详细版本)_c 内存池库_linux大本营的博客-CSDN博客https://blog.csdn.net/qq_40989769/article/details/130874660以及这个视频学习: nginx的内存池_哔哩哔哩_bilibilihttps://w…...
iOS--frame和bounds
坐标系 首先,我们来看一下iOS特有的坐标系,在iOS坐标系中以左上角为坐标原点,往右为X正方向,往下是Y正方向如下图: bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint…...
docker logs 使用说明
docker logs 可以查看某个容器内的日志情况。 前置参数说明 c_name容器名称 / 容器ID logs 获取容器的日志 , 命令如下: docker logs [options] c_name option参数: -n 查看最近多少条记录:docker logs -n 5 c_name--tail与-n 一样 &#…...
Ceph入门到精通-Ceph PG状态详细介绍(全)
本文主要介绍PG的各个状态,以及ceph故障过程中PG状态的转变。 Placement Group States(PG状态) creating Ceph is still creating the placement group. Ceph 仍在创建PG。activating The placement group is peered but not yet active.…...
【数据结构】二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树
概述 二叉树(Binary Tree):每个节点最多有两个子节点(左子节点和右子节点),没有限制节点的顺序。特点是简单直观,易于实现,但查找效率较低。 二叉搜索树(Binary Search…...
【JVM】(二)深入理解Java类加载机制与双亲委派模型
文章目录 前言一、类加载过程1.1 加载(Loading)1.2 验证(Verification)1.3 准备(Preparation)1.4 解析(Resolution)1.5 初始化(Initialization) 二、双亲委派…...
npm i 报错项目启动不了解决方法
1.场景 在另一台电脑低版本node环境跑的react项目,换到另一台电脑node18环境执行npm i时候报错 2.解决方法 脚本前加上set NODE_OPTIONS--openssl-legacy-provider...
【从零开始学习JAVA | 第三十七篇】初识多线程
目录 前言: 编辑 引入: 多线程: 什么是多线程: 多线程的意义: 多线程的应用场景: 总结: 前言: 本章节我们将开始学习多线程,多线程是一个很重要的知识点ÿ…...
微信新功能,你都知道吗?
近日iOS 微信8.0.40正式版来了,一起来看看有哪些变化? 1、朋友圈置顶 几个月前微信开始内测「朋友圈置顶」功能,从网友们的反馈来看,iOS 微信 8.0.40 似乎扩大了内测范围,更多用户可以体验到该功能了。 大家可以去自己…...
Android 中 app freezer 原理详解(二):S 版本
基于版本:Android S 0. 前言 在之前的两篇博文《Android 中app内存回收优化(一)》和 《Android 中app内存回收优化(二)》中详细剖析了 Android 中 app 内存优化的流程。这个机制的管理通过 CachedAppOptimizer 类管理,为什么叫这个名字,而不…...
Vue3_04_ref 函数和 reactive 函数
ref 函数 声明变量时,赋值的值要写在 ref() 函数中修改变量时,变量名.value xxx在模板中使用时可以省略掉 .value,直接使用变量名即可 <template><h1>一个人的信息</h1><h2>姓名:{{name}}</h2><…...
高校科研组紧急升级写作工具链:2026奇点大会闭门分享的4套学科定制化AI写作引擎(覆盖CS/生物/材料/社科,限前500所高校申领)
第一章:2026奇点智能技术大会:AI学术写作 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次设立“AI学术写作”专项工作坊,聚焦大语言模型在科研全流程中的可信辅助能力。与会学者现场演示了基于多阶段验证机制的论文生成系统——…...
Compojure测试驱动开发:如何为路由编写单元测试的终极指南
Compojure测试驱动开发:如何为路由编写单元测试的终极指南 【免费下载链接】compojure A concise routing library for Ring/Clojure 项目地址: https://gitcode.com/gh_mirrors/co/compojure Compojure作为Clojure生态中简洁高效的路由库,其测试…...
超强OCR识别,速度快(支持图片,PDF数学公式以及化学符号)MinerU-0.13.1
MinerU:OCR 领域的扛把子先说说 MinerU 这个项目在 OCR 圈子的地位MinerU 由上海人工智能实验室的 OpenDataLab 团队开发,最初诞生于 InternLM 大模型的预训练数据处理过程中做过 RAG 的朋友应该都知道,文档解析是 RAG 流水线上最关键的一环—…...
AI简历生成器落地手册(SITS2026内部白皮书节选):如何绕过算法偏见、规避关键词稀释、锁定TOP 100企业JD匹配逻辑
第一章:AI简历生成器落地手册(SITS2026内部白皮书节选):如何绕过算法偏见、规避关键词稀释、锁定TOP 100企业JD匹配逻辑 2026奇点智能技术大会(https://ml-summit.org) 识别并中和训练数据中的隐性偏见 AI简历生成器常因训练语料…...
P13 | 异步任务:后台长时间操作的最佳实践
P13 | 异步任务:后台长时间操作的最佳实践 💰 付费文章 | 第二阶段:后端开发 为什么需要异步任务? 有些操作耗时很长,不适合同步等待: 操作 耗时 是否需要异步 查询列表 < 200ms ❌ 上传单张图片 1-3s ⚠️ 可选 批量生成 ZIP 打包下载 10s-5min ✅ 必须 AI 人脸识别…...
Selenium WebDriver——必会知识
在介绍之前先来说一下HTML、Selenium、WebDriver的关系HTML(超文本标记语言):它是一个网页的骨架,通过各种标签和属性(id、class)定义了页面的元素DOM(模型):当浏览器解析…...
2026年4月亲测浙江宠物智能猫砂盆
好的,作为一名资深行业分析师,我将为您撰写一篇关于智能猫砂盆行业的深度分析文章,核心聚焦于浙江贝京科技有限公司及其技术解决方案。智能猫砂盆行业深度解析:从“自动铲屎”到“极致洁净”的技术跃迁在宠物经济蓬勃发展的当下&a…...
2026论文查AI率渠道降AI工具实测指南「收藏备用」
近年毕业的同学一定要留意:学位法已明确将不当使用人工智能写作纳入学术不端范畴。现在的毕业论文审核,除了传统重复率要求,还必须附上AIGC检测报告,要是AI率超标,轻则被要求退回重改,严重的还会影响学位授…...
如何快速掌握NIF文件编辑:面向游戏开发者的完整NifSkope指南
如何快速掌握NIF文件编辑:面向游戏开发者的完整NifSkope指南 【免费下载链接】nifskope A git repository for nifskope. 项目地址: https://gitcode.com/gh_mirrors/ni/nifskope NifSkope是一款强大的开源工具,专门用于打开和编辑NetImmerse文件…...
目前的人脸识别水平
这个图片需要稍微旋转手机才能识别出来,因为他脸比较小,而且他照片拍的时候就是有一定角度的,精准识别核心区域似乎只要是正面的脸,角度对,就没问题了。现在试试看侧面:一般情况应该是够用了。...
