public void GoStep1() { lbOnvifURLs.Items.Clear(); Uri uri; if (!Uri.TryCreate(ddlDeviceURL.Text, UriKind.Absolute, out uri)) { MessageBox.Show("Invalid Address"); return; } var url = uri.ToString(); var paq = uri.PathAndQuery; if (string.IsNullOrEmpty(paq.Trim('/'))) { url += "onvif/device_service"; } var dev = url; var urls = new List <object>(); int port = 0; if (chkOverrideRTSPPort.Checked) { port = Convert.ToInt32(numRTSP.Value); } var od = new ONVIFDevice(dev, txtOnvifUsername.Text, txtOnvifPassword.Text, port, 15); if (od.Profiles == null) { MessageBox.Show(this, LocRm.GetString("ConnectFailed"), LocRm.GetString("Failed")); } else { foreach (var murl in od.MediaEndpoints) { urls.Add(murl); } if (urls.Count > 0) { lbOnvifURLs.Items.Clear(); lbOnvifURLs.Items.AddRange(urls.ToArray()); lbOnvifURLs.SelectedIndex = 0; SetPanel(pnlStep2); } else { MessageBox.Show(this, "No media endpoints found", LocRm.GetString("Failed")); } } }
private void button1_Click(object sender, EventArgs e) { lbOnvifURLs.Items.Clear(); Uri uri; if (!Uri.TryCreate(ddlDeviceURL.Text, UriKind.Absolute, out uri)) { MessageBox.Show("Invalid Address"); } var url = uri.ToString(); var paq = uri.PathAndQuery; if (string.IsNullOrEmpty(paq.Trim('/'))) { url += "onvif/device_service"; } var dev = url; var urls = new List <object>(); var od = new ONVIFDevice(dev, txtOnvifUsername.Text, txtOnvifPassword.Text); if (od.Profiles == null) { MessageBox.Show(this, LocRm.GetString("ConnectFailed"), LocRm.GetString("Failed")); } else { foreach (var murl in od.MediaEndpoints) { urls.Add(murl); } if (urls.Count > 0) { lbOnvifURLs.Items.Clear(); lbOnvifURLs.Items.AddRange(urls.ToArray()); lbOnvifURLs.SelectedIndex = 0; SetPanel(pnlStep2); } else { MessageBox.Show(this, "No media endpoints found", LocRm.GetString("Failed")); } } }
private void ListCameras(IEnumerable <ManufacturersManufacturer> mm, string model) { model = (model ?? "").ToLowerInvariant(); //find http port _discoverer = new URLDiscovery(Uri); //check for onvif support first int i = 0; try { var httpUri = _discoverer.BaseUri.SetPort(_discoverer.HttpPort); //check for this devices foreach (var d in Discovery.DiscoveredDevices) { if (d.DnsSafeHost == Uri.DnsSafeHost) { httpUri = _discoverer.BaseUri.SetPort(d.Port); break; } } var onvifurl = httpUri + "onvif/device_service"; var dev = new ONVIFDevice(onvifurl, Username, Password); if (dev.Profiles != null) { foreach (var p in dev.Profiles) { var b = p?.VideoEncoderConfiguration?.Resolution; if (b != null && b.Width > 0) { dev.SelectProfile(i); var co = new ConnectionOption(onvifurl, null, 9, -1, null) { MediaIndex = i }; URLFound?.Invoke(this, new ConnectionOptionEventArgs(co)); } i++; } } } catch (Exception ex) { Logger.LogException(ex); } foreach (var m in mm) { //scan selected model first var cand = m.url.Where(p => p.version.ToLowerInvariant() == model).ToList(); Scan(cand); cand = m.url.Where(p => p.version.ToLowerInvariant() != model).ToList(); Scan(cand); if (_quit) { break; } } ScanComplete?.Invoke(this, EventArgs.Empty); Finished.Set(); }
private void ListCameras(IEnumerable <ManufacturersManufacturer> m, string login, string password) { int i = 0; try { string addr = txtIPAddress.Text.Trim(); var nPort = (int)numPort.Value; var uri = new Uri("http://" + addr + ":" + nPort); var onvifurl = uri + "onvif/device_service"; var dev = new ONVIFDevice(onvifurl, Username, Password); if (dev.Profiles != null) { foreach (var p in dev.Profiles) { var b = p?.VideoSourceConfiguration?.Bounds; if (b != null && b.width > 0) { dev.SelectProfile(i); var co = new ConnectionOption(onvifurl, null, 9, -1, null) { MediaIndex = i }; AddONVIF(onvifurl, co); } i++; } } } catch (Exception ex) { Logger.LogException(ex); } foreach (var s in m) { var cand = s.url.ToList(); cand = cand.OrderBy(p => p.Source).ToList(); foreach (var u in cand) { Uri addr = GetAddr(u); UISync.Execute(() => tsslCurrent.Text = addr.ToString()); bool found = Helper.TestAddress(addr, u, login, password); if (found) { AddCamera(addr.ToString(), s, u); } if (_quiturlscanner) { break; } } if (_quiturlscanner) { break; } } }