GB28181对接中遇到的问题总结

时间:2024-04-04 17:54:00

Catalog的回复:

对于信令中Catalog的讲解:(对方回复的信令解析)
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<CmdType>DeviceStatus</CmdType>
<SN>3</SN>
<DeviceID>34020000001320000001</DeviceID>----------------------->这个的下级的设备ID
<Result>OK</Result>
<Online>ONLINE</Online>
<Status>OK</Status>
<DeviceTime>2017-07-07T17:44:02</DeviceTime>
<Alarmstatus Num="1">
<Item>------------------------------------------------>Item之间包裹的是真实的ChannelID
<DeviceID>34020000001340000010</DeviceID> |
<DutyStatus>OFFDUTY</DutyStatus> |
</Item>--------------------------------------------------------------------------------------------->
</Alarmstatus>

关于SubjectID:

strSubject.Format("%s:%s,%s:%d", ua->m_strID,strSenderSN,m_OSIPEx[index].m_ServerInfo.m_strID, session->m_Params.m_iSSRC);
改成: 第一个ID为ChannelID而不能填写 DeviceID
strSubject.Format("%s:%s,%s:%d", strID,strSenderSN,m_OSIPEx[index].m_ServerInfo.m_strID, session->m_Params.m_iSSRC);
协议上面描述:

命令流程描述如下:

1:媒体流接收者向SIP服务器发送Invite消息,消息头域中携带Subject字段,表明点播的视频源ID发送方媒体流***、媒体流接收者ID、接收端媒体流***等参数,SDP消息体中s字段为“Play”代表实时点播

需要按照协议中要求的顺序去分别填写:1、表明点播的视频源ID 2发送方媒体流*** 3、媒体流接收者ID 4、接收端媒体流***

<CmdType>DeviceStatus</CmdType>
<SN>3</SN>
<DeviceID>34020000001320000001</DeviceID>
很多厂商你这个地方需要回复的DeviceID需要是8位的域,而不是真实的设备ID,对于协议中的描述我摘抄了一段:

a) 设备目录信息查询请求

<!--  命令类型:设备目录查询(必选) -->

<element name="CmdType" fixed ="Catalog" />

<!--  命令***(必选) -->

<element name="SN"  type="integer" minInclusive value = "1" />

<!--  目标设备/区域/联网系统编码(必选) -->

<element name="DeviceID"  type="tg:deviceIDType" />

<!--  增加设备的起始时间(可选)空表示不限 -->

<element name ="StartTime" type="dateTime"/>

<!--  增加设备的终止时间(可选)空表示到当前时间-->

<element name ="EndTime" type="dateTime" />

所以在这一个地方 <DeviceID>........</DeviceID>可以填写为:1目标设备/ 2区域/ 3联网系统编码
根据不同情况,需要做多种处理方式。

关于注册的小问题:

2016标准中的协议贴出来先:

J.1.3 REGISTER sip: SIP服务器编码@目的域名或IP地址端口 SIP/2.0

Via: SIP/2.0/UDP 源域名或IP地址端口

From: <sip:SIP设备编码@域名>;tag=185326220

To: <sip:SIP设备编码@域名>

Call-ID: [email protected]

CSeq: 2 REGISTER

Contact: <sip:SIP设备编码@IP地址端口>

Authorization: Digest username="64010000002020000001", realm="64010000", nonce="6fe9ba44a76be22a", uri="sip:[email protected]:5060", response="9625d92d1bddea7a911926e0db054968", algorithm=MD5

Max-Forwards: 70

Expires: 3600

Content-Length: 0

注意这个地方的单词:Authorization 其中A是大写的,在对接中很多不同品牌的平台和设备实现中出现过不规范的小写a

在这个地方给大家提醒一***意这个细节,不然调试半天注册不上,原因很有可能就是这么一个小坑;

strncasecmp 这个函数, 比较就是对大小写不敏感,所以在这个地方推荐使用。避免你的平台和别人平台对接不上。

最后:

如果大家希望关于平台对接,或者其他工程需要,可以下载demo进行测试:

http://download.csdn.net/download/qq_24798461/9820447

如果大家有对接方面的问题欢迎咨询我的Chat快问:

GB28181对接中遇到的问题总结