You are here: Wiki>SensorWeb Web>SensorObservationService>VideoOnDemandSOS (26 Oct 2010, HenningBredel)Edit Attach

Video on Demand SOS (VOD)


The Video On Demand (VOD) Service is a motion imagery SOS which aggregates readings from live sensors (cameras). The service provides an interface to make sensors and sensor data archives accessible via an interoperable web based interface (SOS). Besides motion imagery the VOD can serve associated settings and metadata along with the raw image data.

ALERT! We have reorganized and refactored the code of the VOD during the OWS-7 phase. The SVN does not reflect the reorganization, yet. Though, the description may not fit exactly to the status you find in the SVN trunk. Please refer to the OWS-7 branch until we reorganized the SVN appropriately.


The current release implements the core profile comprising of the mandatory operations

  • GetCapabilities, for requesting a self-description of the service
  • GetObservation, for requesting the pure sensor data encoded in Observation & Measurements
  • DescribeSensor, for requesting information about the sensor itself, encoded in a SensorML instance document.


The design of the 52°North VOD SOS is based on a 4-tier web architecture as shown in the figure below.

The lowest layer encapsulates the access of databases or other sources. To enable the user to use different data sources the data access for each operation is implemented using the Data Access Object (DAO) pattern. This enables a developer to easily adjust the data access implementation of the 52°North VOD SOS. By default the 52°North VOD SOS uses a Java Berkeley database to store the sensor data.

The central component of the business logic layer is the RequestHandler class. It receives requests from the presentation layer (a client), validates the request, and forwards the request to the appropriate operation handler class (e.g. GetObservationHandler). The 52°North VOD SOS contains handlers for each supported operation.

The VOD runs as a web application within an Apache Tomcat Servlet engine. Therefore, the presentation layer of the 52°North VOD SOS consists simply of a Java Servlet which handles HTTP requests and responses.

Multiple clients are possible to connect to video data through the 52°North VOD SOS. Based upon the 52°North OX-Framework both thin clients and thick clients can be developed for your sensor application. An example client (52nVODClient) is provided with the 52°North VOD SOS.

Sensor Plugins

As with the SPS you can use your own camera sensor by implementing an abstract plugin interface (here the ACamera) interface of the VOD.

You can see on the diagram below that the custom PluginCamera class is inheriting the abstract ACamera class. A Recorder class records a phenomenon and encodes it in the corresponding frame class (video frame or an arbitrary settings frame). Once a frame (think of a status snapshot) of the observed phenomenon is created the recorder wraps it and fires a new DataEvent on the camera instance. The event is then handled either by the ISettingsEventListerner or IVideoEventListener instances hold by the ACamera instance.


Frame Handling

Along with ACamera interface the VOD provides frames where to put either video data or settings data in (encoded in a SweCommon DataArrayType). The plugin developer can inherit these frame classes for her specific use case. However, due to the plugin mechanism and the DAO pattern, respectively, the VOD differentiates transient frames (coming from the plugin) and persistent frames (stored in the database).

As seen above, the transient frames are handled by ISettingsEventListerner or IVideoEventListener instances. To put a frame into persistent state through a data access object (e.g. BDBCameraDAO in the case depicted below) a frame store implements the appropriate listener and delegates the act of frame persistence to the corresponding DAO. Transient and persistent frames share the same IKeyFrame key interface to ensure the same object identification.


Streaming Data

The VOD stays independent to the protocol the video is requested to be stream on, though only HTTP streaming is supported currently by the refactored VOD.

ALERT! However, the VOD before refactoring supported SDP/RTMP streaming which will be migrated soon, after reorganizing the SVN.

The VOD supports streaming video and corresponding settings data as an application/octet-stream MIME type. The data encoding of the stream can be retrieved by doing a GetObservation request which returns the data structure as SweCommon DataArrayType. The VOD generates a data access link to request the octet-stream via HTTP GET request (using the KVPs like timestamp, procedure, request, etc. in the request URL).


Historic or Live Data

Dependent of the timeframe parameter the VOD streams either historic or live data. Due to several time intervals possible the VOD supports also to schedule future streaming and a mixed mode (start streaming historic data and switch to live mode when everything "old" has been streamed). A snapshot would only return the most current image when the request was handled.


The VOD service has already been applied in several use cases and testbeds.

MSP2 Project

This application demonstrates the usage of OGC’s SensorPlanningService (SPS) specification to control sensor systems. In this case our mobile sensor platform, a little track vehicle with several sensors attached to it, is controlled and tasked via the SPS interface.

  • Watch the demo video showing the interplay of the services


During the OWS-6 testbed a hostage scenario was developed. It shows an emergency scenario where terrorists take hostages in a camera surveilled building. A SensorPlanningService is used for controlling the cameras to film the intruders and a VOD is utilized to retrieve the video feed.


Among other threads, 52°North contributed to the Sensor Fusion thread of the OWS-7 testbed in 2010. Within the Sensor Fusion thread the VOD motion imagery SOS was provided to store both raw image data and corresponding navigation and settings data of a vehicle driving along a road (latitude, longitude, altitude, etc). The VOD sent notification messages on position updates to a SensorEventService to inform a client that the vehicle has entered an area with an already stored video track. The historic video data for that area was requested then from the VOD to compare it afterwards with the live streaming video data from the VOD.

Installation and Configuration




Installation Procedure


Testing the VOD


-- HenningBredel - 2010-10-26
Topic revision: r2 - 26 Oct 2010, HenningBredel
Legal Notice | Privacy Statement

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki? Send feedback