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 and key infrastructure support tools.

Kaltura
Kaltura.org many media components are developed in an open source development partnership with Kaltura.

Metavid
Visit the MetaVidWiki extension page for more info on the metavid extension. For more info on the metavid project you can visit metavid.org. Metavid integrates semanticMediaWiki, interfaces for editing temporal text data such as transcripts and semantic annotations, and interfaces for searching this temporal media metadata.

MwEmbed
MwEmbed is the evolution of the Mv_embed library. Instead of just supporting the embedding video interfaces, MwEmbed is a general library for embedding javascript applications. MvEmbed takes care of dependencies of and optionally takes advantage of the scriptLoader for grouping its component requests. It supports several javascript interfaces. More about MwEmbed and js2 javascript model

svn checkout of stand alone mwEmbed: svn co http://svn.wikimedia.org/svnroot/mediawiki/branches/new-upload/phase3/js2/mwEmbed/

Embeding Video
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.

Other Interfaces
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 (we try avoid custom modification so we can stay in-sync with jQuery & jquery.ui updates)
 * libAddMedia Includes the core support for the Add Media Wizard
 * searchLibs classes that extend remoteSearchDriver for site specific search engines (mediaWiki, metavid, archive.org)
 * firefogg includes support libraries for the firefogg browser extension that provides local theora encoding and resumable uploads.
 * libClipEdit the clip edit base library for image/video manipulation.
 * libEmbedVideo 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.

Firefogg 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.

also see the new-upload branch

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 Extension: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.