Project outline

I propose to do a number of modifications to MetaVidWiki [1] (an existing MediaWiki extension for the annotation of video content), with the common goal of improving the ease in which users can add their own video content to the Wiki.

The specific tasks are:

  • making the process of video uploading to a MetaVidWiki system an easy one-step process (currently, uploading a video file to the system requires several non-trivial steps)
  • adding the ability to use / annotate externally hosted video (from sites such as archive.org and YouTube)

The encompassing goal of the project is to lower the barrier to entry of both users and site administrators to using MetaVidWiki for their own purpose. At present, users with insufficient technical skill will find it difficult or impossible to upload their own media to the wiki. Also, since MetaVidWiki requires certain dependencies that are not trivial to install on a web server (mod_annodex), but are currently necessary for the streaming of uploaded content, not all site administrators might be able or willing to provide the MetaVidWiki extension. By easing the uploading of video to MetaVidWiki, and by relaxing the dependency on mod_annodex by allowing the use of externally hosted video, this project will address said goal effectively.

My personal interest in making MetaVidWiki more easily usable comes from my work towards an open source software tool (called Rehearsal Assistant) that among other things helps artists manage video-recordings of performing arts rehearsals (e.g., uploading the recordings so they can be shared with the cast, as well as annotating the recordings with comments). MetaVidWiki already provides the functionality an artist would need to write and review annotations, once a video is uploaded to the wiki. Easing the video upload process will make it possible for artists to use MetaVidWiki in combination with Rehearsal Assistant. Of course, all work on extending MetaVidWiki will be done in a generic fashion, and useful in all settings that would benefit from an easier upload process for the user.

Project timeline and progress so far:

now - May 26: get familiar with MetaVidWiki and related technologies

May 26 – mid June: work on the uploading of media hosted with MetaVidWiki

mid June – end of July: add support for archive.org-hosted media to MetaVidWiki

end of July – August 18th: add support for YouTube-hosted media to MetaVidWiki

I have only found out about MetaVidWiki recently [2], and have since spent some time researching MetaVidWiki and related Annodex software. I was able to build from source and install all MetaVidWiki prerequisites on my home computer, and successfully test the MediaWiki extension by uploading a video and adding annotations. I now have some very basic knowledge of how MetaVidWiki and its prerequisites work. Members of the MetaVidWiki community have been kind to discuss my project ideas with me through e-mail and IRC [3,4,5], and I believe we have established that the project ideas are feasible.

Implementation Details:

The current process of uploading a file to MetaVidWiki is rather involved. After an appropriately encoded file has been uploaded to the web server (through MediaWiki file upload or otherwise), a new stream page has to be created in MetaVidWiki (by entering a URL of the yet non-existing stream page), and manually linked to the video file. There is an additional step to get the thumbnails of the video into the database, so they can be displayed with annotations. All this should be automated as much as possible on the server side, and the user provided with a one-step interface to replace all of the intermediate steps. This should be a relatively straightforward modification of MetaVidWiki scripts, which is why I'm planning to tackle this problem first.

The integration of outside hosted media is a matter of extending MetaVidWiki functionality to invoke appropriate flash video players rather than the players it is currently using for streaming through annodex files. I have done some rudimentary investigation of the capabilities of FlowPlayer [6] (the player used by archive.org), and the YouTube player [7]. Both players already support everything we need to control and monitor playback for the purposes of MetaVidWiki (seeking to a particular portion of the file, and getting callbacks on playhead position). I've started some very basic studies on the page containing supplemental material for this project proposal [8].

The more difficult aspect of this part of the project will be trying to seek to a particular portion of an externally hosted video without downloading the skipped portions. Michael Dale of MetaVid has suggested that we might be able to make some progress along these lines by following an existing example [9] that uses a custom Flash player and a PHP server script.

Related GSoC project proposal:

This project proposal overlaps (and shares much text) with a project proposal I submitted to Internet Archive, titled "Enabling efficent annotation of archive.org hosted videos through MetaVidWiki". The two project proposals share the common goal of easing the upload and online annotation of video through MetaVidWiki, but differ slightly in their focus and priorities. In particular, the Wikimedia Foundation project would first focus on easing the upload of video to the MetaVidWiki system, and then move on to enabling the use of externally hosted video (from both archive.org and YouTube). The Internet Archive project would first focus on the use of archive.org videos, and place more importance on the development of the custom Flash/PHP player. It is possible that I would be able to complete the work outlined in both proposals no matter which project is accepted - I am submitting both so that the mentoring organizations can choose whichever proposal works out the best (if any).

You can find both proposal linked from the supplemental materials page [8]. The Wikimedia Foundation proposal contains more detail about uploading of video directly to MetaVidWiki, and the Internet Archive proposal contains more detail about the custom Flash/PHP player.

About me, and why I think I can successfully complete this project:

  • I am a Ph. D. student in Computer Science, and have extensive programming experience. Although my expertise is C++, I have worked with Javascript, PHP, Flash/ActionScript, other web programming languages, as well as network protocols, and even though I am not a web programming expert by any means, it doesn't take me long to get familiar with a programming paradigm and start producing useful code.
  • I was a successful participant of GsoC 2007 with Boost [10] as the mentoring organization (I worked on the Dataflow library [11], which was recently submitted for Boost review, and will be presented at the BoostCon conference in May 2008). I am familiar with GSoC, and aware of the scope of work that can be accomplished in the duration of the program. I believe this project is adequate for GSoC and my skill level in the problem domain.
  • I have a vested interest in getting this work done well, due to my work on the Rehearsal Assistant, which is a part of my Master of Fine Arts thesis in Dance (I am in two graduate programs).
  • I have allocated ample time in the summer towards working on this project.

References:

[1] http://metavid.ucsc.edu/wiki/

[2] http://tinyurl.com/25re4r [groups.google.com]

[3] http://metavid.opengov.org/irclog/metavid.log.27Mar2008.html

[4] http://metavid.opengov.org/irclog/metavid.log.28Mar2008.html

[5] http://metavid.opengov.org/irclog/metavid.log.29Mar2008.html

[6] http://flowplayer.org/player/scripting.html

[7] http://code.google.com/apis/youtube/js_api_reference.html

[8] http://urbanstew.org/metavidwiki/

[9] http://tinyurl.com/cpcma [www.flashcomguru.com]

[10] http://www.boost.org

[11] http://dancinghacker.com/code/dataflow/