레이블이 ONVIF인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ONVIF인 게시물을 표시합니다. 모든 게시물 표시

2/06/2016

ONVIF

1. Background

ONVIF는 Open Network Video Interface Forum의 약어라고 하며, Axis Communications, Bosch Security Systems and Sony
이 세회사에 의해 조직이 되었다고 한다. 현재Member들은 Level이 있다고하며, user, contributing, and full member로 구분이 된다고 한다.

1.1 ONVIF Spec 1.0  

2.0은 현재 뭐가 더 추가되었는지는 정확히 모르겠지만, 거의 유사할거라구 추측이 되지만, 
많이 개선이 되었을 거라고 생각이 된다. 
  1. IP configuration             
  2. Device discovery
  3. Device management
  4. Media configuration      
  5. Real time viewing         
  6. Event handling
  7. PTZ camera control   
  8. Video analytics
  9. Security

1.2 Profiles

  1. Profile S - Addresses common functionalities of IP video systems, such as video and audio streaming, PTZ controls, and relay activation.
  2. Profile C - Addresses common functionalities of IP access control systems, such as door state and control, credential management, and event handling.
  3. Profile G - Addresses video storage, recording, search, and retrieval.
  4. Profile Q (Release Candidate) - Addresses device discovery and configuration, as well as the management of TLS certificates and keys
Wiki의 Milestones과 Reference를 보면 각각의 spec의 release된 날짜와 spec을 확인이 가능하지만, Link가 깨져서 아래에 다시 찾았다. 

  • 문서구성 
주요문서는 기본 Spec 문서와 Profiles 문서들로 구성이 되는 것 같으며, Spec을 보고 
어떻게 돌아가는지 이해를 해야하고, 세부 기능들은 Profiles들을 봐야하는 것 같다. 

  https://en.wikipedia.org/wiki/ONVIF

  • Member Company 확인 
  https://www.onvif.org/about/member-list/

2. ONVIF의 기본구조 

처음 ONVIF Spec을 구하지 못해 아래 사이트에서 쉽게 설명을 해주고 있어 간단히,
이해는 했지만, 정확히 이해를 하지 못해 역시 Spec을 봐야겠다고 다시 생각이 들었다.

  • 기본 객체용어
  1. NVT (Network Video Transmitter) :  Network를 통해 Video를 송신하는 자  
  2. NVC (Network Video Client)        :  Network를 통해 Vidoe를 수신하는 자 
  3. NVD (Network Video Display)      :  Network를 통해 Video를 Dislay하는 자. 
  4. NVS (Network Video Storage)      :  Network를 통해 Video를 저장하는자 (NVR)
  5. NVA (Network Vidoe Anlytic)       :  Network를 통해 Video를 분석하는자 (Appro) 제공 
  • 기본 Device Model 
  1. IP Camera는 상위 NVT 가 될 것 같다.  
  2. NVR은   NVC,NVD,NVS가 합쳐져야 할 것 같다. 
  3. NVA는  순수 Debug과 분석용으로 사용하는 것 같다. 
  • 기본구조설명
  상위 내용들을 쉽게 설명해주는 사이트
  http://m.blog.naver.com/msnayana/80155230549

2.1 ONVIF의 기본구성 

기본구조를 보면, SOAP이라는 Protocol을 사용하며, WSDL이라는 언어를 이용하여 주고 받는다.
아래그림은 ONVIF의 Main SPEC 2.0 에 Overview에 나온다.


개인적으로 생각을 정리하면 Web server와 Web Client 동작 형식 거의 동일하며,
다만 언어를 HTML에서 XML로 변경을 해서 다른목적으로 사용하는 것 같다.

  1. SOAP : HTTP,HTTPS,SMTP를 이용하여, Web Service를 이용하고, WSDL을 주고받는 Protocol  
  2. WSDL : XML기반으로 network service를 하기위해서 endpoint에서 사용하한다고 한다. 
SOAP이라는 것은 Protocol이기 때문에  HTTP or SMTP 도 될수도 있다는 것 같으며, 정확히 HTTP 상위에 어떤 Protocol 없는걸로 보아서,
둘 중하나를 사용하기에 이름을 SOAP이라고 사용하는 것 같다.

WSDL은 SOAP 기반으로 즉 XML Message 요청과응답을 하고 이로 인해 설정 및 상태 체크를 하는것 같다

위와 같이 이해하는것은 wiki의 SOAP 주요 특징이 확장성 과 중립성 , 독립성인데, 중립성에서 부연설명을 보면 대략 감이 잡힌다.

  https://en.wikipedia.org/wiki/SOAP

SOAP을 이용하면 XML기반의 RPC기능이 가능하다고 하는데 예제를 보면, 쉽게이해가 간다.
Request XML Message의 Method를 넣고, Response XML에서 이를 얻는다.

  • XML-RPC 예제
  https://en.wikipedia.org/wiki/XML-RPC

  • ONVIF Core Spec (전체구조를 쉽게 이해)
  https://www.onvif.org/specs/core/ONVIF-Core-Specification-v221.pdf


상위 스펙을보고, 다시 위의 기본구조설명 해주 사이트를 보니, 이해하기가 쉬워졌다.

하지만 IP Camera와 ONVIF 실제 소스를 가지고 추후에 분석을 해보고 해야하는데,
이부분 아직 없기때문에 추후 하기로 한다.

그리고, HTTP의 한계를 어떻게 극복을 했는지 그 부분이 궁금하며, GET/POST로만 했는지, AJAX or Node.js 사용하는지 등 다른 부분 역시 궁금하다.
SMTP를 어떻게 이용했는지 역시 궁금하기도 하다.



3. ONVIF의 관련 문서 

  • ONVIF Profiles
  https://www.onvif.org/profiles/


  • SOAP1.2 
  http://schemas.xmlsoap.org/wsdl/soap12/

  • UDDI 
  http://www.uddi.org/pubs/DataStructure-V2.03-Published-20020719.pdf
  http://www.uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.pdf

  • WSDL
  http://schemas.xmlsoap.org/wsdl/
  https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl
  https://www.onvif.org/ver10/event/wsdl/event.wsdl



4. ONVIF Tools 

  • NVC-TEST Tool for Linux
즉 IP Camera를 Test하기 좋은 Program인 것 같다
  http://www.lingodigit.com/onvif_nvc.html

sudo dpkg -i onvif-device-tool_15.12-20160408_jessie_i386.deb

  • ONVIF Device Manager
Window에서 사용이 가능하며, NVC가 NVT, NVS와 NVA를 다루기 위한 Program인 것
같은데, 본인도 설치만 했지 직접 TEST를 못해봤다.

  https://sourceforge.net/projects/onvifdm/
  http://kipod.com/