:: Project MediaBot::
HOME


Useful Links: [ Logs ] [ JMF API Specs ] [ CVS repository ]

Objective: MediaBot is a distributed architecture allowing intelligent content-based indexing, retrieval, browsing and streaming of distributed video libraries. Its users form a community that shares its video data for all of the above purposes. MediaBot has the following three main components:

Team:
Schedule:

Thoughts:


MediaBot Client:
The client software resides on individual nodes that store the multimedia. Every client registered with the server has a unique ID. Also, every multimedia sample in the same client is assigned a unique ID. Together, these uniquely identify multimedia across clients. Also associated with every media sample is a Poster: an icon representative of its content. As soon as a multimedia file (say a video) is added to the client, its metadata becomes available to the MediaBot Agent. The client then performs some low-level signal processing on the multimedia and computes its features. Thus some indexing is done at the client. (We can keep this feature optional, since it requires some time and resources to compute these features. If selected, the processing runs in the background "invisible" to the end user and taking its "own sweet time". These are of course issues that we want to deal with in building and testing the client.) As soon as a multimedia sample (say a video file) has been indexed, its features become available to the MediaBot Agent. Thus, the MediaBot Agent has access to metadata as well as content characterization.

MediaBot Agent:
When a media sample is added to the pool at the Client, the Agent takes to the server its unique ID, its metadata, its features (if they were computed at all) and its Poster. Oitherwise, the Agent simply "listens" for new entries made at any client. Thus the Agent is sufficiently lightweight.

MediaBot Server:
When a user queries the MediaBot Server for say "George Bush", the MediaBot Server checks if it has any metadata (since this is a textual query) corresponding to the query. If it does, it finds the ID's that have media with that metadata. It sends out the MediaBot Agent to collect Posters of that media sample and displays these posters to the client. The user interface presents the Client with three options:
  1. Search more like the Poster clicked. On the second query, the server searches both by content and metadata, thereby collecting more relevant Posters and displaying these to the user. It can also allow the user to select more than one Posters and search based on them. For the search, the server has stored indexed features and metadata that the Agent brought to it, when the media sample was first time added to the pool. Two ID's having the same metadata and features may be merged. We also store the Posters on the server, thereby relieving the client of that much storage and allowing faster rendering of the first hits.
  2. Play the poster clicked. The server simply opens a stream from the ID of the poster (upstream) and to the ID of the user (downstream). The user interface changes to the standard media player interface.
  3. Search on different text. This initiates a new search. The Server also runs, in the background, a learning algorithm that improves its domain knowledge. Every once a while, it updates the active weights. In addition, some improvement can be gained by storing some media on the server too.

Reference Papers

Agents considered

Want to work with mobile agents?(download and install the following for Windows...)
  1. J2SDK
  2. JADE - 3.1 tarball
  3. Set the CLASSPATH environmental variable to include
    .;c:\jade\lib\jade.jar;c:\jade\lib\iiop.jar;c:\jade\lib\jadeTools.jar\c:\jade\lib\Base64.jar       
    
  4. JBuilder for Windows (Very Slow, use command-line instead). I have switched to Nebeans now.
  5. Download the MySQL-driver.jar file and place it in /usr/java/j2sdk1.4.2_03/jre/lib/ext/ or similar directory under windows. Thats it! All your programs should now be able to access MySQL database. Here is the complete tar.gz release of the MySQL driver.
  6. Set up a streaming Server on Windows:
    1. Download and install ActiveStat Perl,
    2. Download and install GnuMP3. Here is our version of c:\gnump3d2\etc\gnump3d.conf.win for windows.
    3. Start the Streaming server using the command c:\gnump3d2\run.
    4. Put the file 1.mp3 in c:\admire\data.
    5. Try to access the server through a web browser by clicking on the URL http://mia.ece.uic.edu:8888/1.mp3 to hear Lucky Ali's Song.
  7. Download quickTime for java from here. Download the "Free player" that has been advertised there. It will include QickTime 6.5. Once you have installed this, go to Start->Programs->QuickTime->Updater and put a check on the link QuickTime for Java and then update. Here is good tutorial to start with.
  8. admire.zip, GUI Frontend
Reference links:
  1. Supposedly good place to start knowing about Mobile agents
  2. Centus Team: Very rich resource for Mobile agents.
  3. "Agent": articles on JavaWorld
  4. DevShed Articles (Check out MySQL Grant Tables), JDBC API Tutorial
  5. Effectively using NetBeans 3.5 IDE, GUI building in NetBeans
  6. The Really Big Index for Java Tutorial, Chris Adamson's Articles on QuickTime for Java.


Reference Texts:



Useful Quotes:
  • This approach has a number of advantages. Multiple (complementary) indexing and retrieval mechanisms are supported in a single framework; such mechanisms are easily replaceable as the field of CBR evolves towards more robust and applicable mechanisms. Software distribution, installation and removal is easy and painless. Image indexing is decentralized. It is compute d the image database by index agents migrating to the agent servers of image providers. Images must not be transported across networks for index generation any more. Retrieved images can b e by watermarking them with the identity of the purchaser.



Last Updated on 1/12/04. Click here for ©opyright information.