ONVIF:列出同一网络中 IP 摄像机的所有主机名

ONVIF: Listing all hostname of IP cameras in same network

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 摄像头一样工作。使用上面的代码设置,给出所有主机名。但是这个片段没有给出实际的 IP 摄像机的主机名。提前谢谢你。

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

大家好,这里是这个问题的解答。

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 link,您可以获得一些其他详细信息,如制造商、序列号等。 我想提一下,在我的情况下,我使用我的手机 phone 作为 IP 摄像头(使用 IP 网络摄像头应用程序)并且此代码提供了 RTSP link.