ONVIF:列出同一网络中 IP 摄像机的所有主机名
Posted
技术标签:
【中文标题】ONVIF:列出同一网络中 IP 摄像机的所有主机名【英文标题】:ONVIF: Listing all hostname of IP cameras in same network 【发布时间】: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 摄像机的主机名。提前谢谢你。
【问题讨论】:
【参考方案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 链接。
【讨论】:
以上是关于ONVIF:列出同一网络中 IP 摄像机的所有主机名的主要内容,如果未能解决你的问题,请参考以下文章