RRnetcam RidgeRun Network Camera Reference Design

From RidgeRun Developer Wiki

Introduction

After assisting many customers creating network connected video capture devices, RidgeRun identified the key points of flexibility to simplify the development of a customized network camera. The key attributes to look for in a network camera reference design include:

Complete set of audio-video capture/processing/saving/streaming capabilities Your product may require streaming at different resolutions, using Transport Stream or RTP, simultaneous saving and streaming, or some other combination to meet your target market requirements. A well designed network camera framework will allow you to be in control of the audio-video streaming details.
Standards based camera configuration and control Often network cameras and configured and used
Enhanced capabilities Video stabilization, motion detection, pre-recording, and other enhanced camera capabilities should be easy to add to your audio-video streaming pipelines.
Branding support All user interfaces should be easily customizable to match the look and feel of the rest of your product line.
Easy to extend functionality There are lots of network camera frameworks available. What makes RidgeRun's network camera reference design unique is the ability for the customer
Open source The key audio-video streaming infrastructure is GStreamer based. There are no per unit royalities and you get complete RRnetcam source code.

Technical overview

RRnetcam is a python based network connected camera framework utilizing GStreamer for audio / video streaming. RRnetcam exposes camera control via JSON HTTP commands or by adding other protocols such as VISCA or ONVIF. RRnetcam supports a rich set of audio / video protocols since all the underlying GStreamer capabilities are available.

Audio / video streaming

The heart of RRnetcam is Streamer, a python class that exposes audio / video functionality as a set of controllable streaming pipelines. Streamer exposes key GStreamer concepts, such as

  • text based pipeline descriptions,
  • play / pause / fast forward / rewind pipeline control,
  • pipeline configuration such as frame rate, resolution, encoding bitrate, etc, and
  • pipeline status

Device control

The camera exposes a web server allowing easy RRnetcam viewing and control. The javascript running in the web browser interacts with the camera using JSON HTTP commands. Depending on the camera's features, new web APIs can easily be added.

For network cameras designed for use in more conventional multi-camera surveillance deployments, protocols like VISCA or ONVIF can be supported to allow for seamless integration. Utilizing python simplifies supporting new protocols or extending protocols that are already supported.

The RRnetcam Controller python module supports the device control features.

Web services

The python Web Server Gateway Interface along with Fast CGI is used to simplify exposing the Controller API as JSON HTTP commands. Any compatible web server can be used, with RRnetcam examples shown utilizing the lighttpd web server.

The browser user interface can be supported using any javascript framework that supports JSON.

Network services

Network services, such as Network Time Protocol, device discovery email alerts are not directly part of RRnetcam, but can be easily supported using existing software technologies.