GB28181 二次开发

虽然 WVP+ZLMediaKit+MediaServerUI 帮我实现了在线播放,但是还是有部分需求无法满足:

  • MediaServerUI 无法对接 h265 码流的视频
  • 部分视频设备是有 GPS 功能的,目前 wvp 不具备对接能力
  • 未知

让 MediaServerUI 兼容 h265

这个是小问题,MediaServerUI 采用 @liveqing/liveplayer

我们单独替换播放窗口的代码,改用 EasyPlayer.js 即可。

对 wvp-GB28181 二次开发

在对 wvp 二次开发前,必须要掌握两点:

  • GB28181 2016 定义了些什么?
  • wvp-GB28181 的设计理念?项目结构?

wvp-GB28181 源码剖析

简介

WEB VIDEO PLATFORM 是一个基于 GB28181-2016 标准实现的网络视频平台,

负责实现核心信令与设备管理后台部分,

支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。

包结构设计

这个项目的基础包路径是 com.genersoft.iot.vmp,gb28181 的相关代码都是在这个域下开发的

  • genersoft 是作者本人的标识

  • iot 是物联网的意思,这体现了作者的架构观

  • vmp 是本期项目名称,我猜是 VIDEO MANAGE PLATFORM,WVP 后续还会有和 vmp 同级别的项目

对 vmp 包的理解

层级 设计理念
common 共性内容,如常量
conf 就是 spring Configuration,做变量映射、容器初始化、web 配置(比如我上面追加的跨域)
gb28181 核心代码,实现 sip 服务器。下文有细节介绍
media.zlm 流媒体的实现,流媒体服务器被触发后(如无人观看断流)会回调这些接口,本项目适配的是 zlm
storager 就是 dao 层,支持 jdbc 或 redis 两种切换
utils 辅助工具类
vmmanger 核心代码,实现 web 服务器。用户端需要的设备、通道、视频播放、历史记录等等功能 API

通常来说车载视频设备都会携带 GPS 模组,

在软件设计上,GPS 和视频都是走 gb28181 协议上载数据,

那么,我们基于 wvp 做 GPS 二次开发的话必须要调整 com.genersoft.iot.vmp.gb28181 的内容。

对 gb28181 包的理解

SipLayer

它实现了 SipListener 接口,代表负责监听SIP协议的应用客户端,

这个接口定义了接收处理从 SipProvider 提交的 SIP 事件消息,

是一个抽象的侦听线程。

这个类好比是 web 项目的启动类(DemoApplication.java)。

内部有两个核心方法,是对 SipListener 接口的实现,它是 sip 消息的入口和出口。

不难发现,无论是 processRequest 还是 processResponse ,内部具体实现都是 SIPProcessorFactory

SIPProcessorFactory

它的设计思路是依照 gb28181 中定义消息类型

它是一个工厂类,用于生产 gb28181 中定义的接收、响应的消息类型

createRequestProcessor

处理请求:INVITE、REGISTER、SUBSCRIBE、ACK、BYE、CANCEL、MESSAGE、NOTIFY

分别对应如下 RequestProcessor

createResponseProcessor

处理应答:INVITE、BYE、CANCEL

分别对应如下 ResponseProcessor

开发车载视频设备的 GPS 推送

在了解了请求和应答的代码结构后,

我们现在基于 gb28181 MESSAGE 通道编写 GPS 数据采集功能,

其实就是在这个位置追加 GPS 对应的 cmdType 识别即可。

在识别 gps cmdType 后,进入 processMessageGPS 方法,

通过 Element rootElement = getRootElement(evt); 获取消息体,然后执行字段提取。

通常来说,这个方法逻辑如下:

  • 接收消息
  • 解析消息
  • 转发消息(通常来说, wvp 应该是做 GPS 转发平台,和业务系统解耦)
  • return void (请求默认应答 200,在 MessageRequestProcessor.process 方法体最后几句代码已实现)

测试

下载 UDP 测试软件,传送门


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:GB28181 二次开发

字数:900

本文作者:夏来风

发布时间:2020-11-20, 18:31:01

原始链接:http://www.demo1024.com/blog/gb28181-dev/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。