Project outline

MetaVidWiki [1] is an existing MediaWiki extension for the annotation of video content. At present, MediaWiki cannot be used to annotate externally hosted video from sites such as archive.org. The goal of this project will be to make annotation of archive.org videos using MetaVidWiki easy for the user, and as efficient as possible.

The specific tasks are:

  • extending MetaVidWiki to work with externally hosted video from archive.org
  • developing a custom player using Flash and a PHP server script that would allow seeking through archive.org videos without the need to download the desired video up to the seek point when only a portion of the video is required (this is to match the current functionality of MetaVidWiki, which uses mod_annodex to retreive only those portions of videos associated with annotations selected by the viewer).

The encompassing goal of the project is to make it as easy as possible for MetaVidWiki users to upload and annotate their own videos using archive.org, as well as make possible the annotation of existing archive.org videos. This addresses the current problem of uploading video to MetaVidWiki being difficult or impossible for users with insufficient technical skill (currently, uploading a video file to the system and preparing it for annotation requires several non-trivial steps), and offers new possibilities for the use of archive.org media.

My personal interest in making video easily annotable through MetaVidWiki and archive.org 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 and connected to the wiki. Allowing use of archive.org videos will ease the video upload process and 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 more familiar with MetaVidWiki and Flash video

May 26 – end of June: implement rudimentary archive.org support for MetaVidWiki

end of June –August 18th: develop the custom Flash player / PHP server for efficient portion retrieval of annotated video.

I have only found out about MetaVidWiki recently [2], and have since spent some time researching MetaVidWiki, related Annodex software, and working with archive.org video. 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 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 found that it already supports 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 basic studies in using Flowplayer in conjunction with annotations on the page containing supplemental material for this project proposal [7].

While the basic support of archive.org videos in MetaVidWiki will be a relatively straightforward task, the more difficult part of this project will be allowing seeking to a particular portion of an archive.org 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 [8], which uses a combination of the following:

  • metadata injected into the .flv file, containing the file offset associated with each frame
  • a PHP server script which can provide a valid flv progressive download starting at a specified file offset that marks the beginning of a frame
  • a Flash player which makes requests from the PHP script with appropriate starting positions, depending on the desired seek position / starting position of playback

The biggest drawback of this approach is that it requires the .flv file to be preprocessed and injected with metadata. As a part of this project, I would investigate the possibility of leaving the original .flv file in tact by storing the necessary metadata in a separate location (e.g., with the MetaVidWiki system). That way, no change would be required to the archive.org video hosting, and it would be possible to annotate existing archive.org videos without changing them. The only likely modification to archive.org would be installing the minimal PHP video serving script on its servers.

In the supplemental proposal materials [7], you will find an example in which I retrieve the position metadata from one source, while the video comes from the unchanged .flv file downloaded from archive.org. Although the example is hard-coded and specific to this file, it shows that keeping the metadata separate from the original video file is possible.

Related GSoC project proposal:

This project proposal overlaps (and shares much text) with a project proposal I submitted to the Wikimedia Foundation, titled "Easing user upload of video for use with 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 [7]. 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 [9] as the mentoring organization (I worked on the Dataflow library [10], 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://urbanstew.org/metavidwiki/

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

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

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