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.
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.