ONVIF управление диафрагмой IP камеры
Я пишу программу на C# для управления камерой через протокол ONVIF.
Спецификация ImagingPort содержит методы GetImagingSetting и SetImagingSettings, позволяющие управлять диафрагмой камеры. Проблема заключается в следующем: пока я не воздействую на диафрагму камеры через веб-плагин от производителя камеры, моя программа не дает никаких изменений в потоке. Как только изменю положение диафрагмы через плагин, моя программа начинает правильно работать. Камера RVi-IPC62Z30-A1.
Вот так подключаюсь к камере:
imagingClient_ = new ImagingBinding();
imagingClient_.Url = $"http://{cameraAddress}/onvif/ImagingPort";
imagingClient_.Credentials = new NetworkCredential(userName, password);
Вот так пытаюсь управлять диафрагмой:
public void ChangeIris(IrisDirections direction)
{
if (initialized_ == false)
return;
if (irisEnabled_)
{
settings_ = imagingClient_.GetImagingSettings(sourceToken_);
var minIris = settings_.Exposure.MinIrisSpecified ? settings_.Exposure.MinIris : 0F;
var maxIris = settings_.Exposure.MaxIrisSpecified ? settings_.Exposure.MaxIris : 1F;
if (direction.HasFlag(IrisDirections.IrisLess))
{
if (settings_.Exposure.Iris - 0.1F >= minIris)
settings_.Exposure.Iris -= 0.1F;
else
settings_.Exposure.Iris = minIris;
}
else if (direction.HasFlag(IrisDirections.IrisMore))
{
if (settings_.Exposure.Iris + 0.1F <= maxIris)
settings_.Exposure.Iris += 0.1F;
else
settings_.Exposure.Iris = maxIris;
}
imagingClient_.SetImagingSettings(sourceToken_, settings_, false, false);
}
}
