【问题标题】:ONVIF: Listing all hostname of IP cameras in same networkONVIF:列出同一网络中 IP 摄像机的所有主机名
【发布时间】:2021-12-06 10:02:51
【问题描述】:
DiscoveryManager manager = new DiscoveryManager();
manager.setDiscoveryTimeout(10000);
manager.discover(new DiscoveryListener() {
    @Override
    public void onDiscoveryStarted() {
        System.out.println("Discovery started");
    }

    @Override
    public void onDevicesFound(List<Device> devices) {
        for (Device device : devices)
            System.out.println("Devices found: " + device.getHostName());
    }
});

我使用上面的代码来获取 IP 摄像机的所有主机名,在描述我的问题之前我想提一件事。我正在使用 IP 网络摄像头 android 应用程序让我的手机像 IP cam 一样。通过上面的代码设置,给出所有主机名。但是这个 sn-p 没有给出实际 IP 摄像机的主机名。提前谢谢你。

【问题讨论】:

    标签: rtsp hostname onvif


    【解决方案1】:

    此代码使用 Onvif 协议。但 IP 网络摄像头 android 应用程序可能不是 Onvif 设备,因此该设备无法与您的代码通信。 这像: 你是英国人,我是越南人。你说“你叫什么名字?”,我不明白。我需要学习英语。就像你的 IP 网络摄像头需要设置 Onvif 协议。

    【讨论】:

    • 非常感谢@james Z 的回答,但问题是我可以得到IP 摄像机的RTSP 链接。我仍然无法获得 IP 摄像机的端口号。如果您对此有任何解决方案,请帮助我。再次非常感谢您
    • 如何获取 IP 摄像机的 RTSP 链接?你能告诉我你的代码或你的方法吗
    • @Vittel Solutions,嗨,当我发布此问题时,我正在使用 Spring Boot 执行此任务,现在我使用 'onvif-nvt' 和 node-onvif NPM 完成此任务。由于字符限制,我无法将整个代码粘贴到评论部分。再次感谢您。
    【解决方案2】:

    大家好,这里是这个问题的解决方案。

    public class OnvifMediaURL {
    
        OnvifManager manager = new OnvifManager();
    
        public void mediaURlFinder(String string) {
    
            OnvifDevice device = new OnvifDevice(string);
            manager.getServices(device, new OnvifServicesListener() {
    
                @Override
                public void onServicesReceived(@NotNull OnvifDevice onvifDevice, OnvifServices paths) {
                }
            });
    
            manager.getDeviceInformation(device, new OnvifDeviceInformationListener() {
                @Override
                public void onDeviceInformationReceived(@NotNull OnvifDevice device,
                        @NotNull OnvifDeviceInformation deviceInformation) {
                    // TODO Auto-generated method stub
                }
            });
    
            manager.getMediaProfiles(device, new OnvifMediaProfilesListener() {
    
                @Override
                public void onMediaProfilesReceived(@NotNull OnvifDevice device,
                        @NotNull List<OnvifMediaProfile> mediaProfiles) {
                    manager.getMediaStreams(device, mediaProfiles.get(0), new OnvifMediaStreamURIListener() {
    
                        @Override
                        public void onMediaStreamURIReceived(@NotNull OnvifDevice device,
                                @NotNull OnvifMediaProfile profile, @NotNull String uri) {
                            // TODO Auto-generated method stub
                            System.out.println("URL " + uri); //Printing RTSP URL
                        }
                    });
    
                }
            });
    
        }
    
    }
    

    将您从 OnvifDiscovery 获得的主机名、用户名和密码传递给 mediaURlFinder( ) 方法,它会为您提供 RTSP 链接,您可以获得其他一些详细信息,如制造商、序列号等。 我想提一下,在我的情况下,我将手机用作 IP 摄像头(使用 IP Webcam 应用程序),此代码提供了 RTSP 链接。

    【讨论】:

      猜你喜欢
      • 2015-10-07
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 2015-12-31
      • 2013-03-22
      相关资源
      最近更新 更多