基于GB/T 28181 标准的监控摄像头视频接入技术
转自:https://cloud.tencent.com/developer/article/1383531
在安防AI领域,遍布城市或建筑内各个角落的摄像头是最边缘的设备,是一切AI处理和应用的数据源头。随着应用范围和场景的扩充,应用中摄像头的数量越来越大,对监控摄像头设备进行集中且有效的管控成为刚需。GB/T 28181标准作为公共安全视频监控联网系统的国家标准,受到海康、大华、英飞拓等国内大部分厂家的支持,协议覆盖摄像头、NVR、管理平台等设备。对GB/T 28181 标准的支持将会扩大各种基于视频处理智慧系统的应用范围,在实际项目中有推广和实用价值。本文提供一个通过GB/T 28181标准获取摄像头视频的演示样例,并通过样例展开所涉及到的其他内容,若因水平或对标准的认知有限导致内容有误,请指出。点击查看标准完整文本: 公共安全视频监控联网系统信息传输、交换、控制技术要求。
一. 摄像头端的配置
要使用28181标准接入摄像头,需要在摄像头端完成协议相关内容的配置,抛开传输安全,28181使用SIP协议作为信令应用层协议,使用RTP协议作为媒体传输协议。
海康摄像头28181接入方式配置画面
大华摄像头28181接入方式配置画面
可以看到,需要配置的字段基本相同,概括下:SIP协议需要的本地SIP用户名、密码和端口,SPI服务器的用户名、密码、IP和端口,SIP保活的周期,服务器ID。如果对这些内容不太了解,大家可以大致看一下SIP协议文本:RFC3261。RFC3261详细规定了SIP各种事务的流程,大家并没有看到媒体传输相关的协议,因为这部分协议在SIP消息SDP段携带,在服务器和客户端之间进行商议,SDP协议的具体内容参看:RFC2327。
二. 视频接入流程
视频接入基本可以拆分为4个过程:1.客户端(摄像头)通过REGISTER方法相服务器注册,这个过程会验证账户和密码信息,可能会多一个消息来回(401 unauthorized和带密码信息的register);2.注册完成后,客户端向服务器发送MESSAGE进行保活和其他信息交流,消息体为XML格式,一般有Catalog和Keepalive等类型;3.服务器端收到请求后向客户端发起会话要求,标准的INVITE流程;4.客户端或者服务器端发起BYE消息结束会话。为方便大家对协议有一个直观的了解,我把一次通信过程中的网络包抓取下来,大家可以通过包分析工具查看。
SIP_28181.zip
SIP视频接入相关流程
三. 视频接入Demo实现
SIP协议在IP电话、空管ED136/137/138/139等VOIP相关领域应用广泛,其中有asterisk/FreeSwitch等开源的服务器实现,也有jsip,osip等SIP协议解析层面的开源实现。这些开源实现完整而全面,改造做demo的话工作量大门槛高,本文在实现的时候使用了https://github.com/1lann/go-sip 实现的简单框架,该框架还很不完整,但是已经实现了基本的收发SIP消息的封装,这对我们实现Demo来说已经足够,感谢开源作者。
在SIP视频接入流程中,服务器需要应答的几种消息有:REGISTER/MESSAGE/200OK,需要主动发出的消息有INVITE。因此,修改example_server.go中的主要涉及的点有:1.消息处理循环中,新增MESSAGE消息回200OK;2.服务启动的时候监听媒体接收端口;3.在摄像头完成注册后,主动发出INVITE以完成会话流程,让摄像头持续发来视频数据。下面分别介绍这3点实现。对接NVR的流程基本一致。
1.处理REGISTER消息
server/auth.go中HandleRegister()函数用于接收和处理注册消息,在这个逻辑里,有比较多的校验,最主要的是checkAuthorization()函数中的密码校验。为使得客户端(摄像头)能够顺利通过校验,在server/accounts.go中,新增摄像头配置页面中设置的帐号与密码。(也可以更直接的将鉴权过程直接避开,来者不拒)
新增客户端帐号密码
2.处理Message消息
Message消息的应答比较固定,直接应答200OK消息,因为我们为获取视频,可以忽略其他设备控制或状态信息。
MESSAGE消息处理
3.处理接收到的200OK消息
200OK消息不需要应答,直接打印出消息体供调试即可。
200OK消息处理
4.准备好接收摄像头发来的视频数据
主动给终端发送INVITE请求后,迅速完成会话建立过程,为避免纠结于到底在什么地方开始启动视频数据接收,我们在程序启动时开始。摄像头使用RTP进行媒体数据的传输,因此在收到的UDP报文中,直接删除12字节的RTP头部,这里是偷懒的行为,正确的话需要解析RTP头部看是否携带了拓展头部,如果携带一并删除。(在端口收到视频数据后,也可以直接使用VLC播放)
监听6000这个媒体端口,6000在INVITE中告知摄像头
5.向摄像头发起会话,开始视频传输
demo的实现比较简单直接,不使用任何无用的库,直接拼凑出SIP报文文本,然后通过UDP连接发送到摄像头。作为一个routine运行,在指定摄像头连上来之后,向摄像头发出报文,开始会话过程。
发给摄像头的INVITE消息(关注sdp_string)
6.终止程序,查看收到的视频
使用VLC或者FFPLAY都可以直接播放。
使用VLC播放ps.dat
四.Demo转应用要解决的问题
1. 稳定而健全的SIP事件状态机,这需要深入了解和实现协议,另外还需要提供统一的配置和管理中心;
2. 对复杂拓扑网络结构的支持,信令和媒体需要能够跨网络传输;
3. 安全传输的问题,信令和媒体加密;
4. 对28181协议中状态和控制相关信令的支持;
基于GB/T 28181 标准的监控摄像头视频接入技术相关推荐
- GB/T 28181联网系统通信协议结构和技术实现
技术回顾 在本文开头,我们先一起回顾下GB/T28181联网系统通信协议结构: 联网系统在进行视音频传输及控制时应建立两个传输通道:会话通道和媒体流通道. 会话通道用于在设备之间建立会话并传输系统控制 ...
- 基于EMQ X,打造AIoT物联网视频接入解决方案
目录 1.背景 2.解决方案概述 方案1:平台层统一接入集成 方案2:平台层统一接入集成 方案3:边缘端统一集成 1.背景 近期看到EMQ 联合万为致力于打造 AI.IoT "一体化&quo ...
- Android平台基于RTMP或RTSP的一对一音视频互动技术方案探讨
背景 随着智能门禁等物联网产品的普及,越来越多的开发者对音视频互动体验提出了更高的要求.目前市面上大多一对一互动都是基于WebRTC,优点不再赘述,我们这里先说说可能需要面临的问题:WebRTC的服务 ...
- 浏览器低延时无插件播放监控摄像头视频-接入LiveNVR支持HTTP-FLV分发
背景描述 LiveNVR的使用者应该都是清楚的了解到,LiveNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由LiveNVR处理可 ...
- 【金猿技术展】视频矫正技术——基于参数估计的自由几何变换算法
拍乐云技术 该技术由拍乐云申报并参与"数据猿年度金猿策划活动--2020大数据产业创新技术突破榜榜单及奖项"评选. 大数据产业创新服务媒体 --聚焦数据 · 改变商业 " ...
- 安防视频上云的趋势、痛点及华为云视频接入服务探索及实践
随着视频资源与内容在互联网所占比重不断提升,相应的在视频资源利用水平以及不断提高的业务和产品需求之间的矛盾也会愈加突出.本文来自华为云视频接入服务产品经理齐彦昆在线上分享中的演讲,结合在视频接入服务的 ...
- 快速搭建基于GB/T28181-2016的完整音视频框架
快速搭建基于GB/T28181-2016的完整音视频框架 建设目标 国家相关标准.行业标准 平台框架结构 平台开放 前端设备SDK 视频接入网关 PC客户端 移动客户端(Android) 标准过检 更 ...
- GB/T 28181国标2022版本变化
GB/T 28181国标2022版本变化 本文件代替GB/T 28181-2016<公共安全视频监控联网系统信息传输.交换.控制技术要求>,与 GB/T 28181-2016相比,除结构调 ...
- 新版国家标准GB/T 28181—2022将于2023年7月1日正式实施,与GB/T 28181—2016差别有哪些?
新版国家标准GB/T28181-2022<公共安全视频监控联网系统信息传输.交换.控制技术要求>已于2022年12月30日发布,将于2023年7月1日正式实施. 与GB/T 28181-2 ...
最新文章
- ACMNO.36输入三个整数,按由小到大的顺序输出。
- 一看就知道的Java8日期处理全方位实践
- java cocoon_Java-跳跃路线
- Apache开启Gzip压缩,LAMP网页压缩
- 马哥-51CTO-Linux培训-0910-程序包管理
- mysql要怎么定义环境变量_mysql设置环境变量
- matlab高斯滤波跟中值滤波区别,matlab图像滤波处理代码讲解 均值滤波 中值滤波 高斯滤波...
- [机器学习] PMML实现模型上线
- 全国计算机二级c语言题库,计算机二级c语言题库及答案
- 相亲交友婚恋活动报名小程序开发制作功能
- Python:2行代码实现文字转语音
- VB获取一个文件夹中指定的文件或文件夹名称到列表
- 线上靶机prompt.ml
- 系统架构师笔记——数据库
- tree traversal (树的遍历) - preorder traversal (前序遍历)
- php取雅加达时间,2018年雅加达亚运会电竞赛程表 8月电子竞技比赛时间一览
- 统计学的那些冷门思考(各种检验+中心极限)
- java熔断器_详解spring cloud分布式关于熔断器
- 网易秘密启动“D计划” 引爆新一轮电子邮箱大战
- 娶个日本女人做老婆是怎样一种体验
热门文章
- MATLABnbsp;nbsp;median函数amp;nbs…
- 3DMAX动画渲染 军舰在海中航行
- Mac更新系统后,无法正常打开AE的解决办法
- ae无法连接ame_怎么我的AE无法连接media encoder?如何解决AE链接不了media encoder的问题?求教谢谢...
- 肿瘤免疫新抗原鉴定(一)OptiType安装与运行
- 与CPU相关的计算题
- unity 获取两个向量夹角
- 织梦系统(DEDECMS)后台模板修改一
- python做测试小工具_自制快速冒烟测试小工具--基于python多线程(2)
- 说说Mac上的截图快捷键