GB28181设备端使用SPVMN调试记录——编码端

GB28181设备端使用SPVMN调试记录——编码端

1、SPVMN参数修改

可以按照SPVMN说明书,使用rar压缩软件解压后修改,但这种方式一定要删除相关缓存文件,下次启动SPVMN时会重新自动配置;

也可以直接修改相应目录下的缓存文件,只要不删除这些文件,这种方式删除缓存文件后又会恢复默认值;

2、注册过程异常

通过抓包发现,注册时服务器在接收到带认证的注册信息后依然返回401消息,设备端和服务器之间进行了多次“401-register-401...”循环,很多包数据后服务器才返回200 OK。

通过分析最后一个认证成功的报文和前面报文的区别发现

最后一包(完成注册的那包)via字段中,branch值与之前批量未成功的报文中此值有差异,最后一位不同

通过了解via.branch字段可知其由两部分构成,其中前半部分可认为固定字段,后面的一串字符为系统时间信息。

猜测spvmn内部会判断第一个register报文和后面带认证信息的register报文的时间差,后面报文的时间信息必须大于前面报文才可以,因此修改程序,OK!

此处修改的方式是在sip_build_register_digest_msg中,使用"sys_os_get_uptime() + 1"构成branch字段;

或者也可以在收到服务器的401消息后,延时一定时间再发送带认证信息的register消息;

3、使用spvmn发起invite异常

spvmn设备类型选择IPC,设备注册成功后,点击实时点播,注意观察发送消息编辑框中sdp报文数据中以下两行的IP地址是否正确(应该同服务器地址):

o=3402xxxxxxxxx 0 0 IN IP4 IP

c=IN IP4 IP

如果之前没有配置SPVMN的运行参数,此消息框中的IP信息很可能是错误的,可直接在此处修改IP信息,修改后点击发送消息。

通过消息输出框可以看到invite已经发出,并且收到了设备端的200 ok,同时spvmn也发出了ACK,但是图像依然没有出来!!!

使用wireshark抓包发现服务器发送的invite和客户端回复的200 OK都正常,但是最后一个ACK消息(服务器发出)的目标IP是2.7.26.160???

经过多番对比发现设备端回复的200OK信息中,contact内容和其他标准设备端(以海康IPC做对比)发送的略有差异,将此处进行修改之后,服务器发送的ACK便正常发送至设备端,设备端收到ACK后开始发送RTP包,网页上视频正常显示。

此处暂时采用的修改方式是修改sua_build_contact函数中构成contact的方式;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值