Some improvements added. README edited

This commit is contained in:
yakovlevdmv
2018-04-07 18:54:57 +03:00
parent 4966762ce0
commit 86573fc414
3 changed files with 39 additions and 19 deletions

View File

@@ -6,21 +6,41 @@
- PTZ
- Video Analytics
# Dependencies
[etree](https://github.com/beevik/etree)
# Установка
Для установки библиотеки необходимо воспользоваться утилитой go get:
`go get github.com/yakovlevdmv/goonvif`
```
go get github.com/yakovlevdmv/goonvif
```
# Начало работы
Чтобы начать работать с камерой, необходимо создать объект `device`.
Для этого необходимо воспользоваться функцией `func NewDevice(xaddr string) (*device, error)`,
которая принимает адрес ONVIF устройства и возвращает указатель на созданный объект.
которая принимает адрес ONVIF устройства и возвращает указатель на созданный объект либо ошибку.
Если камера не доступна, указан неверный адрес для ONVIF сервиса камеры (возможно находся по другому порту) или же камера вообще не поддерживает ONVIF
функция вызовет ошибку.
функция вернет не `nil` error, а в качестве указателя на объект вернет `nil`.
### Пример подключения к камере
Пусть камера в сети находится по адресу 192.168.13.42, а ее ONVIF сервисы расположены на 1234 порту. Тогда,
`dev := goonvif.NewDevice("192.168.13.42:1234")`
```dev, err := goonvif.NewDevice("192.168.13.42:1234")```
сработает успешно, а
`dev := goonvif.NewDevice("192.168.13.42:80")`
вызовет ошибку:
> camera is not available or it does not support ONVIF services
```dev, err := goonvif.NewDevice("192.168.13.42:80")```
вернет нулевой объект камеры и ошибку:
> camera is not available at 192.168.13.42:80 or it does not support ONVIF services
Модернизируем код, чтобы обрабатывать ошибку и получим:
```
dev, err := goonvif.NewDevice("192.168.13.42:80")
if err != nil {
panic(err)
}
///Работа с камерой
```
### Поддерживаемые ONVIF сервисы
Теперь, когда камера доступна, можно приступать к работе с ней. Однако стандарт ONVIF имеет множество сервисов, точка доступа (endpoint) к которым не закреплена стандартом (кроме DeviceManagment: http://onvif_host/onvif/device_service).
Поэтому дальше встает вопрос о поддерживаемых камерой сервисах и определении их endpoint'ов.
Для получения поддерживаемых камерой сервисов необходимо вызвать метод GetCapabilities сервиса DeviceManagement.
Однако данная библиотека автоматизирует данный процесс, поэтому при создании объекта device при помощи `func NewDevice(xaddr string) (*device, error)`
библиотека одновременно обрабатывает поддерживаемые камерой сервисы. Таким образом чтобы получить поддерживаемые устройством сервисы, можно воспользоваться двумя путями:
1. Вызвать метод GetCapabilities сервиса DeviceManagement(как это сделать будет рассмотрено дальше) и обработать ответ.
2. Довериться библиотеке и вызвать функцию `func (dev *device)GetServices() map[string]string`, которая вернет map[string]string, ключом которой является название сервиса, а значением - endpoint данного сервиса