130 likes | 144 Views
This thesis project from the University of Arkansas at Little Rock focuses on the development of a Remote Object Webcam Controller using CORBA and JMF technologies. The project utilizes CORBA for remote method invocations in a heterogeneous environment and JMF for incorporating time-based media into Java applications, like streaming video. The system architecture includes components such as Media Server, WebCam Processors, and WebCam Controllers, allowing users to view video from webcams and archived videos. The architecture also involves the use of RTP for streaming video and QuickTime video files. The system's event notification is managed using CORBA's Event Service and Notification Service, making it beneficial for large distributed systems where event management can be challenging.
E N D
Development of a Remote Object Webcam Controller (ROWC) using CORBA and JMF Thesis Project University of Arkansas at Little Rock Frank McCown http://www.harding.edu/fmccown/rowc/
Technologies Used • CORBA • Middleware for remote method invocations in a heterogeneous environment • Java Virtual Machine • Platform independent run-time environment • Java Media Framework (JMF) • API for development and incorporation of time-based media (like audio and video) into Java applications • Real-time Transfer Protocol (RTP) • Quick delivery protocol layered on top of UDP for providing streaming video
System Architecture Streaming video Streaming archived video QuickTime video files Media Server WebCam Processors WebCam Controllers
WebCam Processor • Running on machine with JMF-compatible webcam
WebCam Controller • Can view video from any webcam and any archived video
Media Server • Stores QuickTime video to file • Metadata stored in MS SQLServer
Event Notification • CORBA’s Event Service and Notification Service • Useful in large distributed systems where management and proliferation of events are difficult to control • Distributed Callback Model1 • Client calls method on Server and supplies a callback • Server responds using client’s callback 1D. Schmidt and S. Vinoski, “Distributed Callbacks and Decoupled Communication in CORBA,” C++ Report, vol. 8, October 1996.
Registration Object IDL interface Registration { // Notify MediaServer that a new CamController has started oneway void addCamController(in string hostName, in CamControllerCallback callback); // Notify MediaServer that CamController is going down oneway void removeCamController(in string hostName); // Notify MediaServer that a new CamProcessor is available oneway void addWebCam(in string location); // Notify MediaServer that a CamProcessor is no longer available oneway void removeWebCam(in string location); // Used by CamProcessor to get MediaServer's host name string getServerHostName(); // Return array containing locations of all active CamProcessors StringArray getLocations(); };
CamControllerCallback IDL interface CamControllerCallback { // Notifies all CamControllers that a new CamProcessor is // available oneway void addWebCam(in string location); // Notifies all CamControllers that a CamProcessor is no longer // available oneway void removeWebCam(in string location); };
RegistrationImpl.java public class RegistrationImpl extends rowc.RegistrationPOA { protected Hashtable camControllers; public synchronized void addCamController(String hostName, CamControllerCallback callback) { camControllers.put(hostName, callback); … } public synchronized void addWebCam(String location) { // Notify all webcam controllers of new webcam at given location Enumeration enum = camControllers.elements(); while(enum.hasMoreElements()) { CamControllerCallback callback = (CamControllerCallback)enum.nextElement(); callback.addWebCam(location); } … }
VideoViewer.java This class controls the GUI for the Webcam Controller. public class CamControllerCallbackImpl extends rowc.CamControllerCallbackPOA { // Server notifying us that new webcam is available. Add it to our list of locations. public synchronized void addWebCam(String location) { locationsComboBox.addItem(location); locationsComboBox.repaint(); } … }
For More Information • Thesis, source code, and presentation is available at http://www.harding.edu/fmccown/rowc/