Media Projects

This page hopes to outline media related projects. This should help keep developers on the same page in regards to improved media handling in mediawiki.

Metavid
Metavid The original collaborative metadata for video project. The base codebase for a lot of the below mentioned projects. For more info you can visit metavid.org. Metavid integrates semanticMediaWiki, interfaces for editing tempopral text data such as transcripts and semantic annotations, and interfaces for searching this temporal media metadata.

Mv_Embed
Mv_embed in its most basic usage case can be thought of as an evolution of Extension:OggHandler. It adopts oggHanlders client plugin detection code and then does a bit more fancy things to enable html based playheads, ogg seeking, remote embedding, timed text and a host of other features. These features are abstracted out into separate classes and autoloaded with the scriptLoader so the interface can be clever about loading only what features your using at the right time.

In addition MV_embed provides core engine for other media interfaces. Mv_embed integrates with ScriptLoader php system for just in time loading and grouping of library requests. Here we list the top level folders and short explanation: (extended descriptions for components that need it are listed below
 * jQuery Mv_embed and child classes are dependent on JQuery and a few plugins (some of which have custom modification see the jquery tree mv_embed svn for more info)
 * libaAddMedia Includes the core support for the Add Media Wizard
 * searchLibs classes that extend remoteSearchDriver for site specific search engines (mediaWiki, metavid, archive.org)
 * libClipEdit the clip edit base library for image/video manipulation.
 * libEmbedObj provides embed abstraction. Supported embed methods are java cortado, native html 5 player, VLC and flash fallback.(flash fallback is only maintained for sites that want to support fallback to flash (non wikimedia projects))
 * libSequencer provides the sequencer component. This allow for basic video sequencing of clips. See sequencer below
 * libTimedText provides libraries for inline display of text transcript info. Supports SRT & CMML.

Javascript Script Loader

 * ScriptLoader a php based script loader for on demand javascript class loading, grouping, minifying, gziping, and message localization. This allows the javascript to load the entire set of javascript libraries needed in one request. Enables a unified approach to translation of user messages in javascript based interfaces. For more info see the ScriptLoader page.

Add Media Wizard
Add Media Wizard is the tool for adding media to pages or sequences. Abstracts the remote repository architecture to work with the new upload api.

Remote Archive Search
So far commons, archive.org and metavid are supported as repositories. Again see the Add Media Wizard for more info.

Fireofgg integration
Working on including support for the Firefogg extension. (part of add media wizard) Also see the commons end user documentation

New Upload API
Based on the initial work by vodaphone and then Bryan Minh; the new upload api abstracts out the Special:Upload page into a few classes and then extends the mediaWiki an API to support upload contributions. My work is focused on bring that branch up-to-date and adding chunk support for breaking POST requests into 1 meg resumable chunks. The chunk support enables firefogg to progressively upload video content with resume on reset POST requests.

Sequencer
Probably the largest component that ties together and necessitates all the above mentioned pieces to work. It includes a javascript based reduced feature set SMIL interpreter with arbitrary image time serving and sequence playback and editing. Also includes some server side components. For more info see the Extensions:Sequencer page.

Clip Edit
Can be thought of as the figure editor or "clip" editor. We eventually want to this to be a feature rich layout and layer manipulation tool. Manipulations will be stored in a "stack" and not modify the underlining assets. This lets collaboration occur around the figure editing proccess. It will be usable inline figures in articles and for building "key frames" in sequences.

Currently just crop & video trimming is supported but the base pixastic-lib has been imported with plans to add in hooks to that library.

The same export mechanism for frame serving and exporting video sequences will drive the "flattening" of these figures (since the edit stack will likely include canvas manipulations we will render the figure server side or on the client and use that for display.

These "figures" or "clips" will be template for localization and reuse. All manipulations will be stored in floats (rather than pixel positions) to facilitate seamless scaling up by using higher resolution image assets. This documentation will be fleshed out a bit as the code is ;) We will try and use SMIL like descriptions for crops and filters.