Analog Video Camera Web Server

One project I was involved with while working in the Computer Vision Lab at Ohio State was developing a web server to control and stream video from a network of analog surveillance cameras. The majority of cameras today are IP-based - that is, users can connect to them over the internet. The goal of this project was to write a server that users could connect to via TCP to control and stream video from the network of analog video cameras used by our lab (turn our analog cameras into ip cameras). The general idea is illustrated below.

Clients could control and query the camera. When such a request was made to the server, the server relayed the request (assuming the request syntax and permissions are correct) to the appropriate camera through a serial port on the server. Additionally, clients could request single image captures, or image streams from the server. All of the cameras were connected to a graphics card on the server machine. The image related functionality was implemented in C using a library to interface with the graphics card. The server (developed in Java) interfaced with this library using Java Native Interface (JNI).

This nice aspect of this work is that it was leveraged in several subsequent projects (e.g., Human Computer Interaction for Visual Surveillance).