Макс Лапшин (levgem) wrote,
Макс Лапшин
levgem

Category:

Onvif

В интернете мало человеческих текстов о том, что такое ONVIF. Надо немножко восполнить пробел.

Итак, ONVIF — это протокол поверх SOAP, в котором сведена (или сделана попытка) вся существующая логика, связанная с охранным видеонаблюдением и смежными областями (умный дом).

ONVIF — это не обобщенный транспорт всего-всего, а уже работающий протокол в котором написано, что конкретно надо послать в устройство, что бы оно выполнило ту или иную бизнес-функцию, как-то: сообщило свой RTSP урл или повернулось направо или что-то ещё.

ONVIF описывает работу с камерами, мониторами, рекордерами и всякими смежными штуками. Например механизмы по автоматизации пенитенциарных учреждений в ONVIF не прописаны, но работа с датчиками по открытию дверей есть.



Начинается ONVIF с WS-Discovery. WS-Discovery — это механизм поиска ONVIF совместимых устройств в локальной сети (на самом деле это общий механизм для SOAP, но черт с ним).

Когда вы запускаете программу, управляющую камерами, она посылает UDP пакет по мультикаст адресу 239.255.255.250:3702 со следующим содержимым:


<s:Envelope 
  xmlns:s="http://www.w3.org/2003/05/soap-envelope" 
  xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</a:Action>
    <a:MessageID>uuid:53062770-f8a5-438e-b9b1-f05d892a4104</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1">urn:schemas-xmlsoap-org:ws:2005:04:discovery</a:To>
  </s:Header>
  <s:Body>
    <Probe xmlns="http://schemas.xmlsoap.org/ws/2005/04/discovery">
      <d:Types 
        xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" 
        xmlns:dp0="http://www.onvif.org/ver10/network/wsdl">
        dp0:NetworkVideoTransmitter
      </d:Types>
    </Probe>
  </s:Body>
</s:Envelope>


Тут XML во всей красе: куча всякого-всякого, но по сути здесь есть MessageID, и Probe(types=[NetworkVideoTransmitter])

Могут быть и другие запросы: Hello и Bye.

Порядочное ONVIF устройство слушает на этом мультикаст адресе (не забываем, что на один мультикаст адрес:порт можно повесить несколько программ) и, получив такой запрос, отвечает в ответ совсем беспощадным XML-ем, в котором оно рассказывает о том, какие подвиды ONVIF оно знает и по каким HTTP(s) адресам к нему можно обращаться в надежде получить сервис.
Tags: erlyvideo, ip камеры, onvif
Subscribe

  • Документация на сайте

    Немножко хочу рассказать про документацию на нашем https://flussonic.com/doc/ Основные идеи, которые сейчас я принял при развитии документации…

  • Железный транскодер Flussonic Coder

    Мы в этом году сделали и сейчас начинаем продавать свою собственную железку: аппаратный транскодер. Это большой переход для софтверной компании,…

  • Ржавая камера получила WebUI

    В прошлом году я наконец смог выделить нормальное количество денег на разработку своей прошивки для IP камер. Эта идея у меня была года так с 2013,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 4 comments