M3F

From XiphWiki
Jump to navigation Jump to search


See other suggested metadata methods.

This document describes the proposed Multimedia Metadata Format (M3F) for the Ogg Container. The format is built on the Extensible Markup Language (XML). It is intended to describe any kind of multimedia (audio, video, text, images, …) that can reside in an Ogg container.

HELP IS NEEDED!! See the ogg-dev email list or contribute directly to the wiki.

Format description

Multimedia Metadata Format documents describe media resources in Ogg containers and stream. The format can link resources with one another for media players that support rendering multiple kinds of media. (Such as audio tracks and albumart; and video and commentary audio overlays.)

No element except ‘metadata’ is required. But some elements have required attributes.

All dates must be formatted as ISO 8601:2000 – International Date and Time Format.

XML declaration and name spaces

A metadata document must have a standard XML declaration on the very first line. The XML deceleration must contain the ‘version’ and ‘encoding’ attributes; as shown in the below example:

<?xml version="1.0" encoding="UTF-8" ?>

The ‘metadata’ element is required as the top level container. It must contain at least one XML name space defining the format via the ‘xmlns’ attribute. (The URL used in the example is not the final address as no name space have been created yet.)

<metadata xmlns="http://xmlns.xiph.org/metadata/0.1/">
	[…]</metadata>

The Multimedia Metadata Format can be extended by including multiple XML name spaces to the ‘metadata’ element. As with any other XML format: Software may not add, modify, or expect elements and attributes not defined by a XML name space.

Addressing the media resource

Media resources in the stream is described as ‘resource’ children of the ‘metadata’ element. Each resource element must have a ‘oggserial’ linking it to the correct chunk in the stream. It must also have a ‘type’ attribute with the native MIME type of the resource.

<resource oggserial="0×EXAMPLE" type="audio/vorbis">
	[…]</resource>

Resource elements can also have an optional unique ‘id’ attribute. The ‘id’ attribute is used as a label when the resource needs to be addressed by another resource element.

<resource id="unique-resource-id" […]>
	[…]</resource>

Describing the media resource

There are many children elements of the ‘resource’ element. All are optional and everyone can be used with any resource. Though media type spesific children are grouped together. These children does not make much sense with all media types

Describing encoding

The ‘encoding’ element describes the encoding or digitalization of the resource.

<encoding>
	[…]</encoding>

The optional ‘date’ child element describes when the last file encoding happen. When the file is re-encoded another date element should be added with the new date..

<encoding>
	<date>2018-10-25</date>
	</encoding>

The optional ‘source’ child element describes the original media source for the encoding. The required ‘media’ attribute should be either ‘cd’, ‘dvd’, ‘tape’, ‘web-stream’, ‘tv-stream’, ‘radio-stream’, or ‘unknown’. The optional ‘uri’ attribute should uniquely identify the CD.

<encoding>
	<source media="cd" uri="urn:x-isrc:0123456789" />
	</encoding>

The optional ‘software’ child element describes the softwares used for the encoding. The optional ‘title’ attribute describes the software name. The optional ‘version’ attribute describes the software version. The required ‘uri’ attribute should uniquely identify the software (and version).

<code><pre><encoding>
	<software title="flac" version="2.2" uri="http://xiph.org/flac/" />
	</encoding>

=====Describing rights=====
The ‘rights’ element describes the Copyright and license status of the resource.

<code><pre><rights>
	[…]</rights>

The optional ‘date’ child element describes when the Copyright were put in place. This is especially useful when determining when a work's Copyright expires.

<rights>
	<date>2018-10-20</date>
</rights>

The optional ‘license’ child element is a short and human-readable version of the full license.

<rights>
	<license>© 2018 Recording Company. All distribution rights reserved.</license>
</rights>

The optional ‘link’ child element can point to any URI via it's ‘uri’ attribute where a full version of the license is available. This means it can be pointed to a ‘resource’ element via it's ‘id’ attribute as well!

<rights>
	<link type="text/html" uri="http://licenses.record-company.com/artist.html" />
</rights>

Below are media type specific children of the ‘resource’ element. The elements are grouped by the media type they describe.

Describing an audio resource

Describing a image resource

Describing a text resource

Describing a video resource

Full example

(Deprecated. Will be updated later.)

<?xml version="1.0" encoding="UTF-8" lang="en" base="./" ?>
<metadata xmlns="http://xmlns.xiph.org/media-metadata/0.1/">
	<video type="video/theora" />
	<image type="application/svg+xml" />
	<text type="text/plain" />
	<audio type="audio/flac" oggserial="audio.flac">
		<title>Sink To the Bottom</title>
		<collection track="2" tracks="12" date="1996-10-01" uri="urn:x-isrc:0123456789">
			<title>Fountains of Wayne</title>
			<artwork uri="#embedded-image" /></collection>
		<collection track="1" tracks="1" date="1997">
			<title>Sink To the Bottom</title></collection>
		<entities>
			<person role="vocal">Chris Collingwood</person>
			<person role="instrument vocal" title="base">Adam Schlesinger</person>
			<person role="vocal instrument" title="guitar and vocals">Jody Porter</person>
			<person role="instruments" title="drums">Brian Young</person>
			<organisation role="ensemble">Some People in the Background</organisation>
			<person role="producer">Person behind the Glass Wall</person>
			<organisation role="label" uri="http://recording-people.com/">Recording Company</organisation></entities>
		<rights date="2018">℗ 2008 Recording Company. All distribution rights reserved.</rights>
		<duration>23:04:01</duration>
		<date>2007-01-08</date>
		<location>China, Earth</location>
		<encoding>
			<date>2009-02-17</date>
			<quality compression="8" />
			<source media="cd" uri="urn:x-isrc:0123456789" />
			<software title="flac" version="2.2" uri="http://xiph.org/flac/" /></encoding></audio></metadata>

History

  • 2007-09-08 – Wiki page created based on original format and suggestsion from the email list.
  • 2007-09-06 – Format suggested on Xiph's ogg-dev email list by Daniel Aleksandersen.