国标GB28181协议客户端开发(一)整体流程和技术选型

简介: 国标GB28181协议客户端开发(一)整体流程和技术选型

国标GB28181协议客户端开发(一)整体流程和技术选型

本系列文章将介绍国标GB28181协议设备端的开发过程。本文旨在探讨整体设计和技术选型方面的考虑,为开发人员提供指导和参考。文章将从设备端开发的整体架构、信令交互流程以及关键技术选型等方面展开讨论,帮助有需要的读者了解和把握GB28181协议设备端开发的要点,掌握开发GB28181协议设备端所需的技术和知识,为实际项目的开发奠定基础。

GB28181协议简介

GB28181全称是“公共安全视频监控联网系统信息传输、交换、控制技术要求”,它定义了视频监控设备之间的联网通信协议,旨在实现视频监控系统的互联互通和统一管理。而近些年来,随着视频监控系统的快速发展,GB28181已经成为事实上的IPC网络摄像头、NVR网络硬盘录像机等各种监控设备必有的标准协议。

  1. 基本架构:
    GB28181协议的基本架构包括设备端和平台端。设备端包括视频监控设备,如摄像头、录像机等;平台端则是视频监控系统的管理平台,负责设备管理、视频流接收和存储等功能。
  2. 信令交互:
    GB28181协议使用基于SIP的信令交互机制(进行了扩展)。设备之间通过发送SIP信令来建立通信会话和传输控制信息。常用的SIP消息有注册、心跳、设备搜索、设备状态查询、设备控制等。
  3. 数据传输:
    GB28181协议使用RTP来传输音视频流。视频监控设备通过RTP协议将实时的音视频数据封装成数据包,并通过网络传输到接收端。

通过以上几点,可以看出来,GB28181是跟SIP协议有非常大的相似性,但是两者侧重领域不同,GB28181协议是在SIP协议的基础上针对视频监控领域进行了定制和扩展,以满足视频监控设备之间的联网通信需求。与SIP协议相比,GB28181协议更加专注于视频监控系统的需求,并提供了特定的功能和接口。协议所包含的主要功能有以下几点:

  • 设备注册管理
  • 设备信息查询、目录查询、状态查询
  • 实时预览
  • 录像查询、回放和下载
  • 设备控制(云台控制、布/撤防、辅助开关等)
  • 语音广播和语音对讲
  • 报警事件通知和分发
  • 校时
  • 订阅和通知

GB28181设备端整体架构

  • 网络层:负责设备的网络连接和通信。
  • 管理控制层:处理设备的控制指令、管理请求、录像存储和检索。
  • 媒体层:负责音视频编解码和媒体文件的解析。

GB28181设备端的运作流程

  1. 启动设备:设备端启动后连接网络,并初始化各个模块。
  2. 建立RTP/RTCP网络:设备端需要在启动后,初始化RTP/RTCP网络,用于之后与平台之间建立媒体通道,进行音视频流的传输。
  3. 注册平台:设备向指定的平台发送Register注册请求,包括SIP设备ID、IP地址、SIP端口等关键信息。这里面会有一个两次注册的流程,用于GB28181平台进行密码校验,这个以后会说。
  4. 心跳保活:设备定时向平台发送心跳消息,以保持与平台的连接。
  5. 响应平台管理请求:设备接收来自平台的管理请求,如设备目录查询、状态、信息等操作,然后根据请求做出相应的响应。
  6. 实时预览:设备接收来自GB28181平台的实时预览请求,将实时的音视频流,组合成RTP报文,发送给请求方。
  7. 录像存储、查询与回放:设备进行录像存储,将录像数据按时间段进行分割和存储。在GB28181平台发送录像回放请求时,设备根据请求将对应时间段的录像数据,组合成RTP报文,发送给请求方进行回放。
  8. 报警处理:设备接收报警触发信号,并发送报警通知给GB28181平台。在接收到报警处理请求时,设备可以进行相关处理,如触发报警音频、视频推送等。
  9. 网络连接保持:设备端需要保持与GB28181平台的稳定网络连接,处理网络断开和重连等异常情况。
  10. 关闭设备:设备端接收到关闭指令时,或者主动断开时,都需要对正在进行的RTP数据链路,发送相应的SIP bye报文,并进行相关资源的释放。

这其中,关键的几个步骤是注册、心跳、设备目录查询、实时预览以及网络连接维护这几项,只有实现这几点,才能算是一个基本的GB28181设备端。

技术选型

选择合适的技术对于GB28181协议设备端的开发至关重要。以下是一些关键技术的选型建议:

  • 开发语言和框架:项目开发,通常都是根据项目需求以及开发团队的技术背景,选择合适的开发语言和框架。根据本次项目需求,我是采用C++来实现底层进程,采用QT来做界面设计。
  • SIP协议库:选择一个稳定、成熟的SIP协议库,用于处理信令交互。常见的选择有PJSIP、JAIN-SIP、oSIP、eXosip等等,考虑到网上资料的成熟性,选择eXosip来作为SIP基础库。当然,这里面由于SIP信令都是类似于HTTP的文本协议,也可以考虑自己来实现。或者直接采用Node.js来做,由于我是C++实现整套工程,所以选择了eXosip。
  • RTP协议库:为了实现音视频流的传输,可以选择支持RTP/RTCP协议的底层库有很多,例如JRTP、ortp、live555,考虑到RTP本身并不复杂,可以自己实现,这里我采用了后者。
  • 媒体库:由于GB28181设备端需要提供视频/音频流,涉及到视频文件读取、解码、编码等多种功能,采用ffmpeg是最合适的方案。
目录
相关文章
|
消息中间件 缓存 测试技术
企业微信针对百万级组织架构的客户端性能优化实践
本文主要分享的是企业微信在百对百万级大规模组织架构(后文简称大架构)时,是如何对客户端进行性能优化过程的,希望带给你启发。
85 0
|
存储 开发者
国标GB28181协议客户端开发(二)程序架构和注册
国标GB28181协议客户端开发(二)程序架构和注册
670 0
|
3月前
|
监控 Java 数据挖掘
通用研发提效问题之支持插件的健康检查效果,如何解决
通用研发提效问题之支持插件的健康检查效果,如何解决
|
3月前
|
存储 前端开发
通用研发提效问题之需要统一的消息模型,如何解决
通用研发提效问题之需要统一的消息模型,如何解决
|
3月前
|
存储 JSON 数据格式
通用研发提效问题之在系统中注册插件,如何解决
通用研发提效问题之在系统中注册插件,如何解决
|
3月前
|
存储 搜索推荐 API
业务系统架构实践问题之单系统内架构形态中,起步时的domain设计问题如何解决
业务系统架构实践问题之单系统内架构形态中,起步时的domain设计问题如何解决
|
数据采集 编解码 数据处理
Android平台如何高效率实现GB28181对接?
GB28181协议是一种用于设备状态信息报送的协议,可以在不同设备之间进行通信和数据传输。
134 1
|
12月前
|
运维 测试技术 区块链
链动2+1模式系统开发指南流程丨成熟案例丨功能设计丨测试部署丨方案项目丨逻辑需求丨源码出售
链动2+1模式系统开发方案是指一个较为复杂的系统开发模式,其中包含两个公链和一个私链的组合。
|
SQL 消息中间件 缓存
【分布式技术专题】「架构设计方案」盘点和总结秒杀服务的功能设计及注意事项技术体系
【分布式技术专题】「架构设计方案」盘点和总结秒杀服务的功能设计及注意事项技术体系
194 0
【分布式技术专题】「架构设计方案」盘点和总结秒杀服务的功能设计及注意事项技术体系
|
存储 前端开发 搜索推荐
基于openerp的erpcmsone:可当网站程序可当内部知识管理及ERP,及前后端合一的通用网站程序选型,设计与部署
本文关键字:openerp website,erp backend website,erp based portal,netdisk storage based blog,uniform www and erp system
489 0
基于openerp的erpcmsone:可当网站程序可当内部知识管理及ERP,及前后端合一的通用网站程序选型,设计与部署