The ROWC Distributed System
by Frank McCown 

Source code:

Other important files:

 

Architecture

The system is composed of three applications:

  1. Media Server - for storing the media and making it accessible to Cam Viewers.
  2. Cam Processor - for conecting to the web cam and streaming the video to watching Cam Viewers.
  3. Cam Viewer - for remote control of web cams.  It displays streaming video from Cam Processors and from the Media Server.

Each of these applications may run on separate computers or on the same computer.  The use of CORBA makes moving the applications from computer to computer more transparent.

 

Installation

In order to run the system, complete the following instructions:

  1. A web cam should be installed on any computer which will use the Cam Processor software.  The Logitech QuickCam was the only one used for testing the software.  Other web cams which are compatible with JMF are acceptable.  See http://java.sun.com/jmf for more information.

    If you do not have a web cam but still want to use the system for testing purposes, a QuickTime video file (.mov file) can be used in place of a live feed to the Cam Processor.  See the instructions below for doing this.
  2. Install JDK 1.3.1 or 1.4.0 from http://java.sun.com on all computers that use the software.

    Make sure C:\<java_home>\bin is in your PATH.
  3. Install JMF 2.1.1a available from http://java.sun.com/jmf or you can download the Windows version here.
  4. Install an RDBMS like MS SQLServer or MySql for which a JDBC driver exists.  The database needs to be accessible to the Media Server on the network.  Drivers for SQLServer are included in the installation package.  This project was built using SQLServer, and some code modifications will need to be made to use a different database.

    A database must be created on SQLServer or MySql that contains a single table called media that contains the following fields:

    location : varchar 50
    name : varchar 50
    size : int
    timestamp : bigint (long)
    length: int

    The database must be given full access permissions to a user named "mediauser" with the password "mediauser" unless otherwise specified in the database.conf file.

  5. Unzip the file rowc.zip in a directory called C:\rowc.  This file contains all the class files, jar files, and configuration files needed to execute the Media Server, Cam Processor, and Cam Viewer.
  6. Change the project.conf file to indicate the host name on which the Naming Service will run.  Change this line in the file:

    ooc.orb.service.NameService=corbaloc::fmccown:5002/NameService

    from fmccown to your computer's host name. 
  7. Change the database.conf file to indicate the host name on which SQLServer is running and the username and password if different from above.

The system is now ready to be started.  Skip the Build section unless you would like to re-build the system from scratch.


Building the System

The ROWC system does not need to be re-built.  If you would like to do this, follow these instructions:

  1. To compile the Java source code for the system, you'll need to install ORBacus 4 for Java from http://www.ooc.com/ob

    Make sure C:\<orbacus_home>\bin is in your path and
    all jar files in C:\<orbacus_home>\lib are in your CLASSPATH.

  2. Unzip the file Source.zip into a directory called C:\Project.
  3. In a CLW (command line windows - MS-DOS Prompt), cd to C:\Project or the directory containing the source code and run makeproj.bat by typing: makeproj

    This will generate all the CORBA java files and compile everything.  No errors will be shown if it completes successfully.  To see exactly how makeproj.bat builds the system, you can view the file in any text editor.


Running the System

The system is composed of three main processes: the Server, the CamProcessor, and the CamViewer.  Each process may be executed on a separate computer in a LAN that does not hide any of the computers behind a firewall.  The Naming Service may also be running on any of the computers (the host name on which the NS is running must be set in project.conf).

The instructions below show how to execute the system on a single machine using three CLWs.  Each CLW represents three different CLWs.  Running the system on different computers would just require the steps taken in each CLW to be taken on separate machines.

  1. Start 3 different CLWs and cd to the C:\Project directory.
  2. If you have not already added the following jar files to your CLASSPATH, type:

    set classpath= .;OB.jar;OBNaming.jar;jmf.jar;sound.jar;msbase.jar;mssqlserver.jar;msutil.jar

    in each CLW before running any of the applications.  This will place the classes from ORBacus, JMF, and SQLServer JDBC drivers in the CLASSPATH env var which are needed by the ROWC Java applications.
  3. Start the Naming Service by executing the startup.bat file in the first CLW.  The Naming Service will launch in its own DOS window using the properties in the project.conf file.
  4. Start the Server in the first CLW by typing: java Server

    The Server app will appear with an "Initializing..." message.  The Server is connecting to the SQLServer database, initializing the ORB, registering the MediaStore and Registration remote objects, and starting a server socket for incoming media.  When it has completed these tasks the Server will say "Ready."
  5. Start the CamProcessor client by typing java CamProcessor -loc LOCATIONin the second CLW.  LOCATION  is the name of the CamProcessor's location (i.e. "Computer Lab").  If you do not specify a location, the computer's host name will be used by default. 

    If a web cam is not available to the CamProcessor, a QuickTime movie file may be used instead.  The movie file will be what is seen by any watching CamViewer.  To use a movie file, start the CamProcessor using the -file flag and indicate the full path of the .move file like this: java CamProcessor -file c:\myvideos\test.mov.

    Once the CamProcessor has connected to the web cam (or opened the movie file), binded to the ORB, instantiated the CamManager object, and registered the CamManager object with the Naming Service, it will display a window showing live feed from the web cam.
  6. Start the CamViewer in the third CLW by typing: java CamViewer

    The CamViewer will bind to the ORB and bind to the MediaStore and Registration remote objects.  Once the initialization activities have finished, the CamViewer window will display allowing the user to view or delete media stored in the Server's database or watch and record live video from available web cams. 

The Naming Service and Media Server must be running at all times for the CamProcessor and CamViewer to work correctly.  Any number of CamProcessors and CamViewers may be running at the same time, although each CamProcessor must use a unique location name.  Using the default location name (the host name) is the preferred method.

Note of caution: The Media Server should always be executed from the same location.  When storing media, the actual movie file is stored in a videos directory located directly off the Media Server's current directory.  All other media information is stored in the database.  If the Media Server changes location, the data for the media will be accessible, but the actual movie file may not be.