Exemple #1
0
        private void GetPtzServices(string ip, int port, double deviceTimeOffset)
        {
            PTZClient ptzService;

            OnvifMediaServiceReference.MediaClient mediaService;

            // Create PTZ and Media object
            if (txtUser.Text != string.Empty)
            {
                //ptzService = OnvifServices.GetOnvifPTZClient(ip, port, txtUser.Text, txtPassword.Text);
                ptzService = OnvifServices.GetOnvifPTZClient(ServiceUris[OnvifNamespace.PTZ], deviceTimeOffset, txtUser.Text, txtPassword.Text);
                //mediaService = OnvifServices.GetOnvifMediaClient(ip, port, txtUser.Text, txtPassword.Text);
                mediaService = OnvifServices.GetOnvifMediaClient(ServiceUris[OnvifNamespace.MEDIA], deviceTimeOffset, txtUser.Text, txtPassword.Text);
            }
            else
            {
                ptzService   = OnvifServices.GetOnvifPTZClient(ServiceUris[OnvifNamespace.PTZ], deviceTimeOffset, "", "");
                mediaService = OnvifServices.GetOnvifMediaClient(ServiceUris[OnvifNamespace.MEDIA], deviceTimeOffset, "", "");
            }

            lbxPtzInfo.Items.Add("Supported Operations");
            foreach (OperationDescription odc in ptzService.Endpoint.Contract.Operations)
            {
                lbxPtzInfo.Items.Add("  " + odc.Name);
            }
            Console.WriteLine(ptzService);
        }
Exemple #2
0
        private void PTZTest(DeviceClient client, double deviceTimeOffset, string ip, int port)
        {
            // Create Media object
            OnvifMediaServiceReference.MediaClient mediaService = OnvifServices.GetOnvifMediaClient(ServiceUris[OnvifNamespace.MEDIA], deviceTimeOffset, "", "");

            // Create PTZ object
            PTZClient ptzService = OnvifServices.GetOnvifPTZClient(ServiceUris["http://www.onvif.org/ver20/ptz/wsdl"], deviceTimeOffset, "", ""); // ip, port); // new PTZClient(client.Endpoint.Binding, client.Endpoint.Address);

            // Get target profile
            OnvifMediaServiceReference.Profile[] mediaProfiles = mediaService.GetProfiles();
            string profileToken = mediaProfiles[0].token;

            OnvifMediaServiceReference.Profile mediaProfile = mediaService.GetProfile(profileToken);

            // Get Presets
            try
            {
                PTZPreset[] presets = ptzService.GetPresets(profileToken);
                lbxPtzInfo.Items.Add("");
                lbxPtzInfo.Items.Add("Presets");
                foreach (PTZPreset p in presets)
                {
                    lbxPtzInfo.Items.Add(string.Format("  Preset {0} ({1}) @ {2}:{3} {4}", p.Name, p.token, p.PTZPosition.PanTilt.x, p.PTZPosition.PanTilt.y, p.PTZPosition.Zoom.x));
                }

                UpdatePtzLocation(ptzService, profileToken);
            }
            catch (Exception ex)
            {
                tssLbl.Text = "Unable to get presets and update location: " + ex.Message;
                throw;
            }

            // Fails if not a PTZ
            OnvifPtzServiceReference.PTZNode node = ptzService.GetNode("1"); // nodes[0].token);

            OnvifPtzServiceReference.PTZConfiguration[] ptzConfigs = ptzService.GetConfigurations();
            File.AppendAllText("ptz.txt", string.Format("\nPTZ configs found: {0}", ptzConfigs.Length));
            File.AppendAllText("ptz.txt", string.Format("\nPTZ config - Name: {0}", ptzConfigs[0].Name));
            File.AppendAllText("ptz.txt", string.Format("\nPTZ config - Token: {0}", ptzConfigs[0].token));
        }
        private void GetOnvifInfo(string ip, int port = 80)
        {
            DeviceClient client = OnvifServices.GetOnvifDeviceClient(ip, port); //, "service", "Sierra123")) // new DeviceClient(bind, serviceAddress))

            client.Endpoint.Behaviors.Add(new EndpointDiscoveryBehavior());

            gbxPtzControl.Visible = true;
            gbxCommand.Visible    = true;

            // We can now ask for information
            // ONVIF application programmer guide (5.1.3) suggests checking time first
            // (no auth required) so time offset can be determined (needed for auth if applicable)
            client = OnvifServices.GetOnvifDeviceClient(IP.ToString(), Port);
            System.DateTime dt = GetDeviceTime(client);
            DeviceTimeOffset = (dt - System.DateTime.UtcNow).TotalSeconds;

            // Switch to an authenticated client if the username field contains something
            if (txtUser.Text != string.Empty)
            {
                client = OnvifServices.GetOnvifDeviceClient(IP.ToString(), Port, DeviceTimeOffset, txtUser.Text, txtPassword.Text);
            }

            GetDeviceInfo(client);
            GetServices(client);

            if (lbxCapabilities.Items.Contains(OnvifNamespace.PTZ))
            {
                gbxPtzControl.Enabled = true;
                gbxCommand.Enabled    = true;
                GetPtzServices(ip, port, DeviceTimeOffset);
                //PTZTest(client, DeviceTimeOffset, ip, port);
            }
            else
            {
                gbxPtzControl.Enabled = false;
                gbxCommand.Enabled    = false;
            }

            GetMediaInfo(DeviceTimeOffset);
        }
Exemple #4
0
        private void GetMediaInfo(double deviceTimeOffset)
        {
            lbxCapabilities.Items.Add("");
            lbxCapabilities.Items.Add("Media Info");

            //OnvifMediaServiceReference.MediaClient mclient = OnvifServices.GetOnvifMediaClient(IP.ToString(), Port, txtUser.Text, txtPassword.Text);
            string xaddr = ServiceUris[OnvifNamespace.MEDIA];

            OnvifMediaServiceReference.MediaClient mclient = OnvifServices.GetOnvifMediaClient(xaddr, deviceTimeOffset, txtUser.Text, txtPassword.Text);

            OnvifMediaServiceReference.VideoSource[] videoSources = mclient.GetVideoSources();
            foreach (OnvifMediaServiceReference.VideoSource v in videoSources)
            {
                string vsInfo = string.Format("  Video Source {0}: Framerate={1}, Resolution={2}x{3}", v.token, v.Framerate, v.Resolution.Width, v.Resolution.Height);
                lbxCapabilities.Items.Add(string.Format("{0}", vsInfo));
            }

            OnvifMediaServiceReference.Profile[] mProfiles = mclient.GetProfiles();
            for (int i = 0; i < mProfiles.Length; i++)
            {
                Profile p     = mProfiles[i];
                string  ptz   = p.PTZConfiguration != null ? "Yes" : "No";
                string  pInfo = string.Format("  Profile #{0} [{1}]: Token={2}, PTZ={3}", i + 1, p.Name, p.token, ptz);
                lbxCapabilities.Items.Add(string.Format("{0}", pInfo));

                List <string> uris = GetMediaProfileUris(mclient, p);
                foreach (string u in uris)
                {
                    lbxCapabilities.Items.Add(string.Format("    URI: {0}", u));
                }
            }

            //var sn = mclient.GetSnapshotUri(mProfiles[0].token);
            //OnvifMediaServiceReference.MetadataConfiguration[] metaDataConfigs = mclient.GetMetadataConfigurations();
            //foreach (OnvifMediaServiceReference.MetadataConfiguration mc in metaDataConfigs)
            //{
            //    OnvifMediaServiceReference.MetadataConfigurationOptions mco = mclient.GetMetadataConfigurationOptions(mc.token, mProfiles[0].token);
            //}
        }