GB28181协议实现简介
来源:互联网 发布:opt最优化理论 编辑:程序博客网 时间:2024/05/23 13:04
国家为了规范安防行业的设备平台互联互通,在2012年出台了GB/T-28181的第一版标准:
这个版本我13年在工作中开发IPC设备使用过,当时觉得协议对流媒体的规范还是比较好(H.264+G711封装成PS流,再经过RTP协议进行实时传输),但是控制方面有很多不足,相对于当前流行的ONVIF协议在控制信令上还是有很多不足。去公安一所检测拿个证书也简单,因为只要信令符合,必选项的功能实现即可(当时就是感觉规范了注册和流媒体,不过这一般监控领域也只需要这关键的信息)。
后续公安一所又感觉2011版本的协议不能满足方方面面的信令需求,于是增加了修改补充协议,如下:
这次的补充,完善之前协议各地方说辞有误或是不清晰的地方,还增加了不少的信令需求,如:回放、下载、配置、传输协议、设备控制(拉宽放大、缩小)等待一系列的功能。
但是这个14年修改补充的文件,很多厂家都不知道,我也是15年才知道有这个文件,为此又在原先的协议基础上进行开发完善。
不可否定的是国家公安机关一直在强推这套协议,也有很多厂家积极响应号召,如我们的一个大客户中星电子,他们的平台就是纯基于GB28181协议实现的,在重点城市进行平安智慧城市的创建。海康和大华虽然也有平安城市的平台,但是不是纯基于GB28181的,只是作为一个协议接入,毕竟他们自己的产品很多走的私有协议(市场决定这些因素),所以个人觉得往往是新兴的科技企业在没有利益的驱使下更愿意推行国家标准。
2016年公安部一所又推出了GB/T-28181 - 2016版本,此版本就是对之前的2011版和修改补充版进行合并,并增加一些信令,说明制定协议的同志们一直都在努力。
这次的版本应该算是阶段性的版本了,短时间内应该不会修改了。
好了,协议的背景已经讲完了。下面来说下怎么去实现这个GB28181的协议栈功能。
GB/T-28181协议其实就是在国际上通用的SIP协议进行私有化定制,流媒体方面就是在国际最流行的编码上进行封装(当然也有我们国家的编码标准SVAC)。
既然是国际上通用协议,那肯定就可以借助开源组织的力量了,要知道这是全球最大的软件组织,几乎所有的程序员都为之敬佩!开源组织给了推进计算机技术发展的很好良方。SIP协议实现完全可以用osip来作为基础协议栈(至少我看到绝大多数厂家是如此实现,海康、大华。。。。),使用开源没什么不好的,至少我们知道他们是稳定的,可靠的,会一直维护的。
我采用的是libosip+libexosip+libxml来实现IPC和平台协议功能,前面两者负责sip协议的实现,libxml用来封装和解析实体信令。通过3~4年的市场应用感觉挺稳定的。
流媒体方面:从编码中获取的h.264+g711的视音频帧,进行PS媒体协议封装(自己写的PS封装协议),再经过RTP传输协议(自己实现)发送至平台。
平台对收到的RTP流媒体进行解RTP,解PS,再进行h.264+g711的解码。
GB28181协议已经慢慢的进行了规范完善,现在大的趋势也已经是这样,虽然以前有很多的私有协议平台,但新建的平安城市等政府都需要能支持GB28181的互联互通,GB28181协议还有互联功能,这个功能比ONVIF好很多,因为可以进行大面积的组网,可以有上下级平台的区分,这一点是ONVIF不能做到的。
ONVIF协议其实也有很多不足,如对事件的具体定义,如对视频分析的定义都是模糊的。用户开发自己的需要自己定义,而且没有对流媒体的方面的定义,因为媒体是通过RTSP协议进行的。
- GB28181协议实现简介
- GB28181协议支持的H264的PS封装实现
- GB28181协议支持的H264的PS封装实现
- 一种基于GB28181协议的国标客户端实现
- gb28181协议 资料收集
- EasyDarwin支持GB28181协议开发
- EasyDarwin支持GB28181协议开发
- GB28181
- GB28181
- 监控安防平台-国标GB28181协议
- GB28181中RTP封包C语言实现
- GB28181协议 SPVMN视频监控联网调测软件
- GB28181 SIP协议栈osip linux交叉编译
- GB28181修改补充文件--雨刷和灯光的控制协议
- Objective-C 协议 简介 +委托的实现
- Objective-C 协议 简介 +委托的实现
- Objective-C 协议 简介 +委托的实现
- Objective-C 协议 简介 +委托的实现
- JVM(5):Tomcat 性能调优和性能监控(visualvm)
- 定时任务执行mysql数据库备份,crontab可运行。
- 分布式架构需要注意的地方
- 第三章:基本概念(操作符)
- Python nonlocal 与 global 关键字解析
- GB28181协议实现简介
- Android开发finish()和System.exit(0);的区别
- 高性能MySQL笔记之索引
- 关于视频播放器拖动点击问题
- C# 相对路径转绝对路径
- Linux MySQL server PID file could not be found!
- PLSQL_Developer8客户端连接远程oracle
- 动态规划--4.最优二叉查找树
- Scala学习——基础