From Gnash Project Wiki

Jump to: navigation, search

This is my meager attempt to explain what we are doing. We're basically aiming for total world domination by this project, which is to create a multimedia infrastructure for a networked world that supports free codecs. The client side runs in multiple environments, from small embedded devices like a Gameboy or cell phone, up to standalone or as a web browser plugin on the desktop. The server needs to support thousands of concurrent streams, plus be able to run on a small device that may have a camera, or something as large as a GNU/Linux cluster. Tying this all together is an ability to tag the creation of audio or video content in a way that if you choose to publish it on any of the popular web sites for this kind of thing, you can attach metadata to that content that others can view or add to.

Initially there are two separate projects being combined here. One big part is Gnash, a Flash movie player and web browser plugin. The other part is what has been called MusicML. MusicML started life as a project to catalog our large collection of Grateful Dead bootlegs and other live music, and then grew to something archive.org could use. Currently Gnash already runs as a plugin for Firefox, Mozilla, Konqueror, Epiphany, Iceweasel and Opera, and is being used on more high-end embedded Linux platforms as the primary interface. MusicML is still more of a specification and design than a functioning system yet.

What has brought these two projects together is the concept of an Open Rights Management (ORM) system. The concept is that as we enter a world where almost anyone can create digital media content, there needs to be a system in place to get metadata on that audio or video content. Rather than built a draconian system like most other Digital Rights Management system, this one is oriented to the rights of the creator of the content, and not the publishers. For instance, somebody might want to allow their video to be republished for free, but if a commercial company wants to reproduce it, they need permission, or to license it based on the terms dictated by the creator.

The final piece is a new one, which is a server for streaming audio and video. This server will be Flash media server compatible, and in addition support the ORM system. A common thread is that the server will support free codecs like Ogg and Theora. Theora is based on the same codec used in the latest versions of Flash, although they are not the same.

The server and client will have hooks in them to support the additional metadata of the media database. This will make it easy to create Flash based applications that can access a data rich environment, enhancing the end users enjoyment. One thought is a music player, written in Flash that also plays photos or videos while the music is playing, and allows you to identify other bands with similar music, search the lyrics, etc...

An unrelated but important event was the FreeDB database decided to shut down. FreeDB is a database of metadata on commercially recorded CDs. This is the free version of GraceNote, whose data is only available to subscribers. Both of these support the CDDB protocol, which is used by most music players to get the track name and performers when playing a commercially recorded CD. The FreeDB data and domain has now been taken over by the MusicBrainz project, whose database is a superset of the FreeDB one. It's maintainers are also into a more accurate and data rich environment for music players, and have an much more active development community than FreeDB did, which is why FreeDB is shutting down.

Initially we will be offering a free data feed of the MusicBrainz data to help with mirroring the data, and providing another source for people to get their metadata from when playing CDs. This doesn't solve the problem we are trying to work on though, but it'll let us start having more data as the MusicML system is developed, and will be our primary source of some metadata on commercially recorded CDs.

Our goals are much more ambitious than cataloging commercial music. We want to be able to catalog non commercial music, most of it produced by people on their home PC, and offer a similar service as the CDDB lookup. Once there is a prototype MusicML database, we'll import the MusicBrainz data into our own format, while also offering a free CDDB lookup of that data. Then we'll extend the CDDB protocol to support additional metadata lookups for the additional metadata that our database will provide. (like lyrics, photos, etc...), as well as add a web based interface that allows much more complex data searches. Some of the data, like song lyrics and album cover art will probably need to be licensed to legally use them for a search.

The main feature the ORM system will then have to provide is a way to birthmark the creation in a way that it will be possible to verify that birthmark if there is a copyright violation. Current Rights Management Systems provide a draconian way of enforcing perceived copyright violations, often by locking up machine playing the content. My working concept is that an ORM system should use existing copyright law for enforcement purposes, and not ever modify the base platform the software is running on. We all know that any digital file can be edited, and any birthmark data added can be removed, so this is the interesting part. How do we birthmark a file, and record that data in such a way that it can be verified to be that particular piece of content ?

The other big goal is to enable people to use free codecs for streaming audio and video. It is actually not legal to produce an MP3 file unless your software is licensed to do so by Thomson Consumer Electronics. Although none of these projects has anything to do with the creation of digital content, its usage of them puts people potentially at risk.

In order to enable people to start utilizing free codecs, the infrastructure must exist to stream the content, as well as to play it. While there are several other free video streaming servers like Icecast, or VLC, they don't have any support for Flash.

A Flash server must also be able to send Flash streams, and to speak the RTMP protocol as used by Flash players. In addition to this, the server also needs to support streaming from an embedded device, for instance, a cell phone camera.

The current video and audio support in Flash players is limited to poorly synchronized animations more suitable for small screens or web browsers. Gnash will have a better infrastructure for the playing of audio and video content. Not only will it support multiple codecs, but by doing so can support a higher quality experience. Since many music and video players these days are getting written in Flash, if a file is being played off a local disk, or over a broadband connection, it might as well be as high quality as possible. Gnash should be able to play video with the same quality as any of the other video players like XINE, Mplayer, or Totem.

When using the Gnash streaming server Cygnal, in conjunction with the Gnash client, it will be possible to easily access the content metadata, as the ability to access the metadata will be built in. If any ORM data exists on that file, it can also be utilized. For instance if the content creator has requested that all reproduction be free, but wants to know how many time the file has been played, the player should know to ask the end user to agree to this condition. Automatically sending any information on the person playing the content should be forbidden, spyware is a bad idea no matter which system implements it.