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).
