1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fibjs-fib-onvif

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 12:10 c6946c3

Cam класс

var Cam = require('fib-onvif').Cam;

new Cam(options, callback)

Параметры:

  • hostname;
  • username, password (необязательно, для работы с большинством функций);
  • port (необязательно).

Библиотека автоматически вызывает connect(), который выполняет getSystemDateAndTime, getCapabilities и другие методы.

Примечание по имени пользователя и паролю:

  • Некоторые камеры не требуют учётных данных имени пользователя:пароля.
  • Если камере требуются имя пользователя:пароль, но вы их не предоставляете, вы будете ограничены выполнением нескольких методов ONVIF, которые могут работать без учётных данных, например, вы можете выполнить только метод getSystemDateAndTime.

Callback (необязательно) выполняется при инициализации cam. Единственным аргументом для этой функции является возможная ошибка.

Техническое описание

Когда объект cam создан, он автоматически отправляет команду getCapabilities на устройство ONVIF. Если устройство является камерой или кодировщиком (NVT), оно отправляет две команды на устройство ONVIF: getVideoSources и getProfiles. Оно заполняет соответствующие свойства объекта:

  • capabilities
    • device
    • events
    • imaging
    • media
    • PTZ
    • extension
  • uri (это ссылки на различные сервисы NVT)
  • videoSources
    • $.token
    • framerate
    • resolution
  • profiles, массив объектов профиля
    • name
    • videoSourceConfiguration
    • videoEncoderConfiguration
    • PTZConfiguration

После этого он запускает метод getActiveSources. Он перебирает все источники видео и пытается выяснить правильную конфигурацию для профиля и источника видео. Первый соответствующий профиль становится членом массива defaultProfiles, а конфигурация источника видео с конфигурацией PTZ становится членом массива activeSources.

Конфигурация для первого или единственного источника видео становится свойствами defaultProfile и activeSource. Все методы без передачи объекта options используют его. Вы можете изменить его вручную в любое время.

  • defaultProfile (ссылка на первый профиль в профилях)
  • activeSource (на основе профиля по умолчанию)
    • sourceToken
    • profileToken
    • encoding
    • width
    • height
    • fps
    • bitrate
    • ptz

connect(callback)

Подключиться к камере и заполнить свойства информации об устройстве с помощью методов getSystemDateAndTime, getCapabilities, getVideoSources, getProfiles

Более подробную информацию см. на сайте http://www.onvif.org/ver10/media/wsdl/media.wsdl

После инициализации камеры мы можем запустить несколько команд ONVIF. Существует несколько распространённых методов, которые работают без учётных данных. Вот они: getSystemDateAndTime.

getSystemDateAndTime(callback)

Возвращает объект Date с текущим datetime камеры в обратном вызове. Работает без учётных данных (передаются аргументы username и password).

getDeviceInformation(callback)

Устройство. Возвращает информацию об устройстве, такую как производитель, модель и версию прошивки, в обратном вызове. Работает без учётных данных (передаются аргументы username и password).

getServices(callback)

Устройство. В обратном вызове возвращает и присваивает свойству #services массив, состоящий из объектов со свойствами: namespace, XAddr, version.

getServiceCapabilities(callback)

Устройство. В обратном вызове возвращает и присваивает свойству #serviceCapabilities возможности службы устройства (не медиа): сеть, безопасность и система. Если ваше устройство поддерживает некоторые вспомогательные возможности, они тоже будут там.

getStreamUri(options, callback)

Медиа. Возвращает URI, который можно использовать для инициирования потока живого мультимедиа с использованием RTSP в качестве протокола управления. Параметры:

  • stream (необязательно) — определяет, запрашивается ли многоадресный или одноадресный поток. Возможные значения: 'RTP-Unicast' (по умолчанию), 'RTP-Multicast';
  • protocol (необязательно) — определяет сетевой протокол для потоковой передачи. Возможные значения: 'UDP', 'TCP', 'RTSP' (по умолчанию), 'HTTP';
  • profileToken (необязательно) — определяет медиапрофиль для использования и будет определять конфигурацию содержимого потока. По умолчанию используется #activeSource.profileToken.

getSnapshotUri(options, callback)

Медиа. Получить URI снимка JPEG с устройства.

getPresets(options, callback)

Возвращает сохранённые пресеты. В качестве объекта «ключ-значение», где ключ — это имя предустановки, а значение — токен предустановки.

Этот метод также сохраняет информацию о предустановках в свойстве #presets объекта.

Варианты:

  • profileToken (необязательно) — определяет медиапрофиль для использования и будет определять конфигурацию содержимого потока. По умолчанию используется #activeSource.profileToken.

gotoPreset(options, callback)

Операция PTZ для перехода к сохранённой позиции предустановки для узла PTZ в выбранном профиле.

Параметры:

  • profileToken (необязательно) — определяет медиапрофиль для использования и будет определять конфигурацию содержимого потока. По умолчанию используется #activeSource.profileToken;
  • preset — название предустановки. Список предустановок можно получить с помощью метода #getPresets или в свойстве #presets.

setPreset(options, callback)

Операция PTZ для установки текущей позиции в качестве предустановки для узла PTZ в выбранном профиле. Если в качестве опции передан presetToken, то будет заменена предустановка, к которой привязан этот токен. После успешного выполнения следует повторно получить предустановки с помощью метода #getPresets.

Параметры:

  • profileToken (необязательно) — определяет медиапрофиль для использования и будет определять конфигурацию содержимого потока. По умолчанию используется #activeSource.profileToken;
  • presetName (необязательно) — имя, которое будет присвоено предустановке (при обновлении предустановки).

removePreset(options, callback)

Операция PTZ для удаления предустановки, указанной с помощью токена предустановки. После успешного выполнения следует повторно получить предустановки с помощью метода #getPresets.

Параметры:

  • profileToken (необязательно) — определяет медиапрофиль для использования и будет определять конфигурацию содержимого потока. По умолчанию используется #activeSource.profileToken;
  • presetToken — токен предустановки, который будет использоваться для удаления (это будет значение объекта предустановки, найденного в #presets, после вызова метода #getPresets).

gotoHomePosition(options, callback)

Операция PTZ для перехода в сохранённую позицию «дом» для узла PTZ в выбранном профиле. Если позиция «дом» не была сохранена, камера ONVIF ничего не сделает.

Параметры:

  • profileToken (необязательно) — определяет медиапрофиль для использования и будет определять конфигурацию содержимого потока. По умолчанию используется #activeSource.profileToken;
  • speed — объект со свойствами:
    • x — скорость панорамирования;
    • y — скорость наклона;
    • zoom — скорость масштабирования. Если опция скорости опущена, будет использована скорость по умолчанию, установленная PTZConfiguration.

setHomePosition(options, callback)

Операция PTZ для установки текущей позиции как позиции «дом» для узла PTZ в выбранном профиле.

Параметры:

  • profileToken (необязательно) — определяет медиапрофиль для использования и будет определять конфигурацию содержимого потока. По умолчанию используется #activeSource.profileToken.

getNodes(callback)

PTZ. Возвращает свойства текущего узла PTZ, если он существует. Используйте эту функцию, чтобы получить максимальное количество предустановок, диапазоны допустимых значений для x, y, zoom, iris, focus. Записывает всю информацию в свойство #nodes.

relativeMove(options, callback)

PTZ. Это метод относительного панорамирования, наклона и масштабирования. Опции для этого метода — разница между желаемой и текущей позицией камеры.

Опции:

  • x — панорамирование, число или строка в диапазоне от -1 до 1, необязательно;
  • y — наклон, число или строка в диапазоне от -1 до 1, необязательно;
  • zoom — масштабирование, число или строка в диапазоне от -1 до 1, необязательно;
  • speed — объект со свойствами:
    • x — скорость панорамирования;
    • y — скорость наклона;
    • zoom — скорость масштабирования. Если опция скорости пропущена, будет использоваться скорость по умолчанию, заданная PTZConfiguration. Обратный вызов необязателен и фактически ничего не значит.

absoluteMove(options, callback)

PTZ. Это абсолютный метод панорамирования, наклона и масштабирования. Варианты для этого метода — абсолютная позиция камеры.

Опции:

  • x — панорамирование, число или строка в диапазоне от -1 до 1, необязательно;
  • y — наклон, число или строка в диапазоне от -1 до 1, необязательно;
  • zoom — масштабирование, число или строка в диапазоне от -1 до 1, необязательно;
  • speed — объект со свойствами:
    • x — скорость панорамирования;
    • y — скорость наклона;
    • zoom — скорость масштабирования. speed option is omitted, the default speed set by the PTZConfiguration will be used.

Callback is optional and means essentially nothing.

continuousMove(options, callback) PTZ. Операция для непрерывных движений Pan/Tilt и Zoom.

Параметры:

  • x — скорость движения Pan, число или строка в диапазоне от -1 до 1, опционально;
  • y — скорость движения Tilt, число или строка в диапазоне от -1 до 1, опционально;
  • zoom — скорость движения Zoom, число или строка в диапазоне от -1 до 1, опционально;
  • timeout — время ожидания в миллисекундах, число. Если timeout опущен, движение будет продолжаться до команды stop.

stop(options, callback) PTZ. Останавливает текущие движения pan, tilt и zoom абсолютного, относительного и непрерывного типа.

Параметры и callback опциональны. Свойствами параметров являются:

  • profileToken (опционально) — определяет медиапрофиль для использования и задаёт конфигурацию содержимого потока. По умолчанию — #activeSource.profileToken;
  • panTilt (опционально) — устанавливается в значение true, когда мы хотим остановить текущие движения панорамирования и наклона. Если аргументы panTilt отсутствуют, эта команда останавливает эти движения;
  • zoom (опционально) — устанавливается в значение true, когда мы хотим остановить текущее движение зума. Если аргументы zoom отсутствуют, эта команда останавливает текущее движение зума.

getStatus(options, callback) PTZ. Возвращает объект с текущими значениями PTZ.

{
    position: {
        x: 'положение панорамирования'
        , y: 'положение наклона'
        , zoom: 'зум'
    }
    , moveStatus: {} // камера движется
    , utcTime: 'текущее время камеры'
}

getConfigurations(callback) PTZ. Получает все существующие PTZConfigurations с устройства. Конфигурации сохраняются в свойстве #configurations.

getConfigurationOptions(configurationToken, callback) PTZ. Получает поддерживаемые системы координат, включая ограничения их диапазона для выбранной конфигурации. Расширяет соответствующий объект конфигурации.

Поддерживаемые методы

  • GetSystemDateAndTime;
  • GetCapabilities;
  • GetVideoSources;
  • GetProfiles;
  • GetServices;
  • GetDeviceInformation;
  • GetStreamUri;
  • GetSnapshotUri;
  • GetPresets;
  • GotoPreset;
  • RelativeMove;
  • AbsoluteMove;
  • ContinuousMove;
  • Stop;
  • GetStatus;
  • SystemReboot;
  • GetImagingSettings;
  • SetImagingSettings;
  • GetHostname;
  • GetScopes;
  • SetScopes;
  • GetRecordings;
  • GetReplayUri.

Changelog

  • 0.6.1 Обходной путь для камер, которые не отправляют дату и время;
  • 0.6.0 Рефакторинг модулей для правильного импорта в среде на основе электронов;
  • 0.5.5 Добавлены ptz.gotoHomePosition, ptz.setHomePosition. Исправлены исключения в ptz.getConfigurations и utils.parseSOAPString. Добавлены тесты для ptz.setPreset, ptz.removePreset, ptz.gotoHomePosition и ptz.setHomePosition;
  • 0.5.4 Обновлён для NPM;
  • 0.5.3 Некоторые исправления. Тесты;
  • 0.5.2 Свойство preserveAddress для устройств NAT, обнаружение с несколькими сетевыми интерфейсами (@Climax777);
  • 0.5.1 Критическое исправление ошибки в SOAP-auth для некоторых камер;
  • 0.5.0 Поддержка профиля G (@RogerHardiman), надлежащий SOAP-auth, поддержка nodejs >= 0.12;
  • 0.4.2 Исправления ошибок;
  • 0.4.1 Улучшенное обнаружение (@sousandrei, @RogerHardiman);
  • 0.4.0 Поддержка кодировщика (@chriswiggins), служба изображений (@EastL);
  • 0.3.1 События на основе EventEmitter;
  • 0.3.0 Рефакторинг, документация, основы службы событий;
  • 0.2.7 WS-Discovery.

Ссылки

Схемы WSDL и документы:

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fibjs-fib-onvif.git
git@api.gitlife.ru:oschina-mirror/fibjs-fib-onvif.git
oschina-mirror
fibjs-fib-onvif
fibjs-fib-onvif
master