Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

设备显示在线,但通道数为0 #614

Closed
houge101 opened this issue Sep 19, 2022 · 25 comments
Closed

设备显示在线,但通道数为0 #614

houge101 opened this issue Sep 19, 2022 · 25 comments

Comments

@houge101
Copy link

描述错误
海康设备显示在线,但通道数为0

如何复现
偶尔,没能找到规律

预期行为
海康摄像头注册成功后应该能显示设备通道号

截图
image
image

环境信息:

    1. 部署方式编译wvp-pro + zlm都是编译部署
    1. 部署环境wvp-pro部署到 windows10 /zlm部署到 centos
    1. 局域网(wvp-pro、zlm和海康摄像头在同一个路由器)
    1. 是否是公网部署(否)
    1. 是否使用https
    1. 方便的话提供下使用的设备品牌或平台(海康摄像头,惠普台式机)
    1. 你做过哪些尝试(仅仅部署了wvp-pro和zlm,修改码流信息,重启设备(包括只启动WVP,ZLM,数据库和全部重启),以及刷新等操作)
      海康IP:192.168.50.64,台式机(WVP)192.168.50.59, 服务器(ZLM)192.168.50.130

wireshark抓包。issue不让上传,所以传网盘里面了
链接:https://pan.baidu.com/s/1ob-yOAMEEZs5fPtXJJSUDg
提取码:z6op

@houge101
Copy link
Author

yml部署如下
image
密码确定二者相同(海康和WVP)

@houge101
Copy link
Author

image
image
image
我又测试了另外一台设备,上面的 id 跟配置文件不同,但一样能显示。所以没太明白通道数为0的原因

@648540858
Copy link
Owner

抓包里没看到catalog请求,你的代码是什么时候的

@houge101
Copy link
Author

9月7号的

@treespringace
Copy link

treespringace commented Sep 23, 2022

我设备在线但是通道号为0

@648540858
Copy link
Owner

开启抓包,点击刷新通道,然后把抓包文件穿上来看下

@HuangDayu
Copy link

@648540858 你好,我们出现了摄像头只注册设备信息,而不注册通道信息的问题,这是抓包数据,麻烦帮忙看一下,谢谢。

15070-2.zip

另外,因为网络安全的策略,我们只开放了sip.port,支持tcp和udp,这是否会影响设备的通道注册和视频预览等功能呢。

@648540858
Copy link
Owner

你没有点击刷新呀

@648540858
Copy link
Owner

抓包里没有目录查询请求

@HuangDayu
Copy link

HuangDayu commented Oct 19, 2022

抓包里没有目录查询请求

没有目录查询的原因是因为没有点击刷新吗? @648540858

@648540858
Copy link
Owner

是啊,我加了通道为0时更新通道,你可以再测试下。

@HuangDayu
Copy link

是啊,我加了通道为0时更新通道,你可以再测试下。

我们部署的环境是联通4G物联网专网。多个网卡,多次转发。

现在出现两个情况:

  1. 消息发送超时错误,回调了processTimeout方法;
  2. 存在摄像头只注册设备情况,而没有注册通道,发现mvp服务没有发送catalog和deviceInfo指令,即使调用sync()方法,也不起作用。

请问这样的情况,如何排查问题?如何延长sip发送请求的超时时间? @648540858

@HuangDayu
Copy link

HuangDayu commented Oct 20, 2022

15070-1 (1).zip

发送catalog没有回复的抓包文件。

15070-2 (1).zip

发送点播视频提示消息超时的抓包文件。

@648540858 麻烦帮忙看看,非常感谢。

@duhaohao
Copy link

我也有相同的问题。

@648540858
Copy link
Owner

消息发送不过去,你需要确认下网络是否通畅,猜测你的设备收不到服务的信息。

@duhaohao
Copy link

duhaohao commented Oct 25, 2022 via email

@648540858
Copy link
Owner

好的

@HuangDayu
Copy link

我在设备端抓包,设备事实上是收到了catalog请求的,但是却始终没有回复。

我在内网环境也是正常的,可是到了物联网专网环境下就不行了。这是设备端抓包结果,麻烦帮忙分析一下:

nvr-package.zip

@648540858 谢谢。

PS:一点猜想,catalog请求是否跟sdpIp有关?因为经过了多层的网络转发,多层ip代理,是否跟sip协议包中所包含的ip地址或端口的准确性有关?如果设备注册消息能收到回复,说明整个网络路径是正常的,可用的。

@HuangDayu
Copy link

0f3b2f5b5cf72ff2801fc0ea65b826f

失败的原因可能是因为From中的IP和端口与SIP服务代理的IP和端口不同所致。

那么怎么能在代码中指定From中的IP和端口呢?看了源码,没找到方法。

@HuangDayu
Copy link

问题已解决,确是IP和端口不一致引起。

@zhuuvzhi
Copy link

zhuuvzhi commented Mar 9, 2023

问题已解决,确是IP和端口不一致引起。

@HuangDayu 请问是怎么解决的🙏🏻

@Felixchen1024
Copy link

同样出现设备在线但是通道号为0,不知道如何解决。
PS使用场景:
1、内网测试都OK;
2、云服务器部署,出现设备在线但是通道号为0
请问大佬们怎么解决的

@Felixchen1024
Copy link

Felixchen1024 commented Aug 15, 2023

@HuangDayu 请问大佬,是怎么解决的?改源码吗?
定位到下面代码,但只涉及设备端的IP。。

/**
     * 查询目录列表
     *
     * @param device 视频设备
     */
    @Override
    public void catalogQuery(Device device, int sn, SipSubscribe.Event errorEvent) throws SipException, InvalidArgumentException, ParseException {

        StringBuffer catalogXml = new StringBuffer(200);
        String charset = device.getCharset();
        catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
        catalogXml.append("<Query>\r\n");
        catalogXml.append("  <CmdType>Catalog</CmdType>\r\n");
        catalogXml.append("  <SN>" + sn + "</SN>\r\n");
        catalogXml.append("  <DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
        catalogXml.append("</Query>\r\n");

        

        Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));

        sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
    }

@Zonciu
Copy link

Zonciu commented Nov 29, 2023

截图中的白名单,把服务器IP地址加上去

@648540858 648540858 pinned this issue Jan 30, 2024
@SugaraguS
Copy link

遇到了类似的问题,初次注册进来时候通道数时正常的,但是删除设备后,重新注册进来就只有设备没有通道了,然后给redis清空,重启服务之后再注册进来就有通道了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants