背景分析
互联网的更新换代过程不断加快,将摄像头进行网络直播的应用程序和场景也越来越广泛,此过程需要将普通的安防摄像头的视频转到公网流媒体服务器,公网流媒体服务器再提供流格式转换,转成RTSP、RTMP、HTTP-FLV、HLS等可以Web、微信等直接播放的格式。目前市面上各种摄像头接入最常见的就是通过GB28181协议。
该协议是摄像头、NVR或其他视频平台等设备端主动向上级注册并保活的,因此设备端可以不需要固定的公网IP,局域网中的设备、4G网络等网络环境下的设备都可以通过GB28181主动注册到公网的服务器上。
需求分析
视频流媒体平台EasyGBS已经实现了GB28181协议,能够接入各个厂家的监控设备和监控平台,实现统一管理,和web端无插件播放,同时支持手机、微信、网页播放。
对接大华硬盘录像机NVR查询录像失败问题分析
在用户使用过程中,我们在对接大华硬盘录像机NVR的时候查询录像失败,在EasyGBS的系统中提示query recordinfo return 400 Bad Request,具体见下图:
问题分析
通过回调信息,我们发现,发送RecordInfo xml消息中缺少Type节点,解决方法就是在RecordInfo xml消息中增加一个值为all的文本元素节点Type,具体解决方式如下。
问题解决
MESSAGE sip:34020000001320000140@192.168.99.140:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.99.120:5060;rport;branch=z9hG4bK171140128
From: <sip:34020000002000000001@3402000000>;tag=363140128
To: <sip:34020000001320000140@192.168.99.140:5060>
Call-ID: 488140128
CSeq: 11 MESSAGE
Max-Forwards: 70
Content-Length: 279
Content-Type: Application/MANSCDP+xml
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<CmdType>RecordInfo</CmdType>
<SN>717140128</SN>
<DeviceID>34020000001320000140</DeviceID>
<StartTime>2019-07-25T00:00:00</StartTime>
<EndTime>2019-07-25T06:00:00</EndTime>
<Type>all</Type>
</Query>
从上我们可以看出,EasyGBS是一款针对GB/T28181而生,调用简单,使用轻量的流媒体平台。