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.
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
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.
). 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.
As with the SPS
you can use your own camera sensor by implementing an abstract plugin interface (here the
) interface of the VOD.
You can see on the diagram below that the custom
class is inheriting the abstract
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
on the camera instance. The event is then handled either by the
instances hold by the
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
instances. To put a frame into persistent state through a data access object (e.g.
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
key interface to ensure the same object identification.
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.
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
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
, 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.
This application demonstrates the usage of OGCs 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
Testing the VOD