MetaVid - Media & Video Semantic MediaWiki Extension

MetaVidWiki is an established community video archive project. Metavid Wiki builds off of the MediaWiki code base, the semantic wiki extension and the open media platform.
MetaVidWiki employs a structured temporal name space with the wiki page model to enable dynamic, versioned metadata for arbitrary stream segments.
Congressional data along with stream metadata is used to build a rich query space for stream segment search.
These segments can then be searched, annotated and sequenced and referenced internally or externally via rss, CMML and json/html- transclusion.

Software Features:

  • Adds namespaces for Streams, temporal stream metadata, and sequences.
  • Adds interfaces for editing multiple sub-name-spaces of temporal metadata per Stream or layers. Enabling the separation of transcript languages, annotative layers or the defining of other layer types.
  • Adds a media search engine based on page semantic properties and defined layer types.
  • Extends Categories, Page Histories, and Semantic result sets with inline video playback.
  • Adds an in-browser sequencer for editing and creating sequences from clip segments.
  • Exports to video rss for categories & searches. Exports CMML for temporal metadata.

Specifically for the legislative archive:

  • Auto-completes media searches with likely people, bills, issue groups or full text search.
  • massive data scrape from open secrets, maplight, govtrack, and others to populate base data set.
  • template based display of people, bills, & interest groups (separating data from display while remaining flexible with user contributed structured data)


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|MwEmbed and js2 javascript model

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,
    • 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, 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

Metavid Community:

The metavid archival video project has a more indexical relationship to its content sources than traditional wikis. A transcript page has a strati forward "correct" textual representation of the spoken word.
While categorization, tagging, and semantic properties can be debated the speech spoken in a given time range is generally not controversial.
This allows casual participants to make meaningful contributions without needing to engage in the complexity or politics of textual representation conventions.
While other conventions emerge for structuring metadata, and general guidelines for where temporal segments should start and end, the majority of the wiki work is relatively non-controversial.

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


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.

Other MetaVidWiki Projects:

For more updates see:

City Councils:

Missoula City Council Open source hackers from Missoula have braved the bleeding edge of metavidWiki for quite some time.
Their installation of metavid uses open source sphinx speech to text software to generate the initial transcripts.
Open Gov is also working to make it easier for people to set up metavid for their own city councils.


Development is maintained on the MediaWiki repository.

Click here to browse project repository.