Changes

Jump to: navigation, search

Metadata

860 bytes added, 12:44, 24 July 2013
Changed tense of M3F + tidy
{{This page aims to give an overview of the current state of metadata in Ogg and the ongoing projects towards improving it. The different components work in concert; for example [[Ogg Skeleton]] provides important infrastructure for [[CMML]], [[VorbisComment]] is simple to use and program, while the draft}}[[M3F|Multimedia Metadata Format (M3F)]] provides more sophisticated information. ==Motivation[[VorbisComment]]s ==
All the Xiph.org codecs have some internal mechanism for including metadata about the current stream.
Generally, this is one of the codec headers, and in the words of the [http://www.xiph.org/ogg/vorbis/doc/v-comment.html vorbis spec], "It is meant for short, text comments...much like someone jotting a quick note on the bottom of a CDR."A single VorbisComment can store upto 2^64 bytes (16 exabytes). VorbisComments store metadata describing the stream in key=value pairs, such as "ARTIST=Elvis", "TITLE=Blue Suede Shoes". Multiple copies of any given key are allowed (for example you can specify ARTIST several times for multiple performers). The specification has several suggested keys: TITLE, VERSION, ALBUM, TRACKNUMBER, ARTIST, PERFORMER, COPYRIGHT, LICENSE, ORGANIZATION, DESCRIPTION, GENRE, DATE, LOCATION, CONTACT, ISRC. See the [http://www.xiph.org/vorbis/doc/v-comment.html specification] for the intent of each one. The [[VorbisComment]] page contains improvements to the suggested comment set. == [[FLAC]] metadata blocks == Metadata is included in the FLAC codec as METADATA_BLOCK_DATA. Seven types of metadata block are defined: #''METADATA_BLOCK_STREAMINFO'': Sample rate, number of channels, etc.#''METADATA_BLOCK_PADDING'': Nul padding.#''METADATA_BLOCK_APPLICATION'': Third-party applications can register an ID. Metadata is typically 32-bit integers, but any datatypes can be specified.#''METADATA_BLOCK_SEEKTABLE'': For one or more seek points.#''METADATA_BLOCK_VORBIS_COMMENT'': Also known as FLAC tags, the contents of a VorbisComment packet. Note that the 32-bit field lengths are little-endian coded according to the Vorbis spec, as opposed to the usual big-endian coding of fixed-length integers in the rest of FLAC. FLAC metadata blocks are limited to 2^24 bytes (16 megabytes) and a VorbisComment packet in FLAC must fit within that limit.#''METADATA_BLOCK_CUESHEET'': Typically, but not necessarily, for CD-DA (Red Book) cuesheets.#''METADATA_BLOCK_PICTURE'': For binary picture data. == [[Ogg Skeleton]] == [[Ogg Skeleton]] provides metadata useful for handling Ogg streams. This includes information like mime-types and mapping for granulepos which allows seeking streams without the need for the demuxer to understand them. The latest version, [[Ogg Skeleton 4]], also provides a keyframe index to enable faster seeking over high latency networks. Ogg Skeleton allows for attachment of message header fields, given as name-value pairs, that contain some sort of protocol messages about the logical bitstream. This is intended for decode related stuff, such as the screen size for a video bitstream or the number of channels for an audio bitstream.
This works well enough for most things, and can be overloaded/abused (depending on your point of view)for most other things. But there are three major requirements that point to the design of an external metadata format; one that can be interleaved with the other streams in a container.== [[OggKate]] ==
* ''Machinability'' There are a number of items of metadata that a player will want to parse [[OggKate]] was originally designed for karaoke and take action ontext. While there are usually 'convention' schemes for doing this with the embedded comment headers, this is much easier if there is a separate metadata The stream designed for such usecan carry text and images, instead of having to do best-effort parsing of natural language comments. For example, a video file with multiple audio tracks can specify the language of each one; a player than can parse and these reliably can match them against a language preference list configured by the user to automatically select and begin playback of the best optionbe animated.
* ''Kitchen Sink'' There are a minority of people who care passionately about having every detail about a track available. In the sense of conserving such information, and providing an equivalent to liner notes for online distribution, this is a goal worth supporting. However, the simple unstructured key-value pairs offered by the inline metadata are unwieldy for this level of detail. How do you tell the 2nd unit Assistant Director from the USA unit Assistant Director? How do you indicate which artist played tenor sax in the solo?== [[CMML]] (deprecated) ==
* ''Addressability'' The internal comment metadata headers are by necessity attached to a single content stream. This CMML is useful for some appication, but a limitation in othersnot used anymore; use [[OggKate]] instead. In a multiplexed stream, which set of comments refers to the collection as a whole? (By convention, in Ogg, it's the first logical bitstream occuring, but we can do better.) A separate metadata stream type must address this issue of collective metadata while still allowing description The [[CMML|Continuous Media Markup Language]] allowed time-based marking up of individual media streams. It should also allow temporal addressability, so that changes can be described. Because the in-stream comment metadata are part of the codec headers, it cannot change over the course of the stream, and allowing additional comment packets elsewhere in the stream presents seeking challenges. In the Ogg container at its simplest this can be resolved by inserting a chain boundary, but this is a poor option for very-low-bitrate streams allowed you to divide media files into clips and unreliable transports such as RTPprovide information about each clip.
==Proposed Solutions[[M3F]] (unused draft) ==
* [[MDMFM3F|Media Description and Multimedia Metadata for the Ogg Container Format]] (MDMF), a very, very extensive metadata format based on XMLis not being developed anymore; use [[VorbisComment]] instead.
*RDF + dublin coreThe format was intended to replace VorbisComments for the use of ''structured'' metadata, allowing VorbisComments to revert to its orginally intended use of "short, text comments ... much like someone jotting a quick note on the bottom of a CDR."
*XML-encoding (options include generic rdf, [[CMMLM3F]] and [http://wwwfor the Ogg container was a draft specification which aimed to provide metadata for media streams.adobeThe exact aims of this project were still under development, but they included being able to describe artist relationships to a piece more accurately as well as providing the structure to encourage more reliable metadata.com/products/xmp/ XMP])
*MusicBrainz == [http://wiki.musicbrainz.org/MusicBrainzXMLMetaData XML MetaData[XMLEmbedding]](unused draft) ==
To implement XML metadata in Ogg (as for [[M3F]]), a mapping to Ogg streams is needed. The use of XML metadata will also open the way for the inclusion of technologies such as:* RDF + dublin core*[http://www.adobe.com/products/xmp/ XMP]* [Ogg_Skeletonhttp://wiki.musicbrainz.org/MusicBrainzXMLMetaData MusicBrainz]* [http://www.w3.org/Graphics/SVG/ SVG] This specification is emerging as still not past the way to approach machineable metadatadiscussion stage.
While implementation is a long way off, suggestions for features orapplications are welcome at the[http://lists.xiph.org/mailman/listinfo/ogg-dev Ogg-dev] mailing listor on this entry's [[Talk:== Aims of advanced metadata|Talk]] page.==
==Test Files==It is a barrier to the widespread introduction of any metadata format that the [http:VorbisComments work well enough for most things, and can be overloaded//www.xiph.org/vorbis/doc/Vorbis_I_spec.html Vorbis I spec] only requires players to support an unaccompanied [[Vorbis]] stream; many [[Ogg]] [[Vorbis]] players will refuse to play augmented streams, especially if the content is not recognised abused (although many recent players do succeeddepending on your point of view)for most other things. As a prelude But there are three major requirements that point to development the design of an [[Ogg]] external metadata format it will ; one that can be necessary to encourage developers to introduce more flexible [[Ogg]] filtersinterleaved with the other streams in a container.
To help with testing the following files * '''Machinability:''' There are available, based on a speculative (number of items of metadata that a player will want to parse and very basic) metadata formattake action on. In each case the derivative files While there are under usually 'convention' schemes for doing this with the same license as the original. Two sets are provided embedded comment headers, this is much easier if there is a separate metadata stream designed for such use, instead of having to allow chained stream testingdo best-effort parsing of natural language comments. On some players For example, a video file with multiple audio tracks can specify the seek tests produce an annoying clicking&mdashlanguage of each one;if you like a player than can parse these reliably can match them against a language preference list configured by the music get user to automatically select and begin playback of the originals. Please notice that filenames are mixed caseand add a note in discussion if you find a broken linkbest option.
Original (Vorbis I)* '''Kitchen Sink: [http://music''' There are a minority of people who care passionately about having every detail about a track available.ibiblio.org/pub/multimedia/pandora/vorbis/contrib/Debbie_Hu/Bach-Busoni_Nun_freut_euch_3.ogg Bach - Nun freut euch lieben Christen] performed by Debbie HuIn the sense of conserving such information, from [http://music.ibiblio.org/pub/multimedia/pandora/mp3/Read.html Pandora Records] and available under the [http://www.eff.org/IP/Open_licenses/eff_oal.php EFF OAL].* The [http://www.srcf.ucam.org/~ibm21/Bach-Busoni_Nun_freut_euch_3.rdf.ogg Ogg-Vorbis-XML version]* The XML/RDF description as providing an equivalent to liner notes for online distribution, this is a [http://wwwgoal worth supporting.srcf.ucam.org/~ibm21/Bach-Busoni_Nun_freut_euch_3.xml separate document]* With However, the XML page [http://www.srcf.ucam.org/~ibm21/Bachsimple unstructured key-Busoni_Nun_freut_euch_3.multi.ogg repeated after every fifth Vorbis page]. (This is not a suggested way to add meta data, just a way of testing how players handle seeking in value pairs offered by the presence inline metadata are unwieldy for this level of an unknown streamdetail.)* With How do you tell the 2nd unit Assistant Director from the XML page repeated after every fifth Vorbis page and USA unit Assistant Director? How do you indicate which artist played tenor sax in the [http://www.srcf.ucam.org/~ibm21/Bach-Busoni_Nun_freut_euch_3.end.ogg stream ending on a meta data page] (breaks simpler track-length strategies, again not a suggested format for metadata)solo?
Original (Vorbis I)* '''Addressability: [http://ccmixter.org/media/files/disharmonic/2958/ On ''' The Moon (Trip Hop mix)] internal comment metadata headers are by [http://ccmixternecessity attached to a single content stream.org/media/people/disharmonic/ Disharmonic]This is useful for some appication, from [http://ccmixterbut a limitation in others.org/ ccMixter] and available under In a multiplexed stream, which set of comments refers to the Creative Commons [http://creativecommons.org/licenses/by/2.5/ Attribution 2.5] license.* The XML/RDF description collection as a [http://wwwwhole? (By convention, in Ogg, it's the first logical bitstream occuring, but we can do better.srcf.ucam.org/~ibm21/disharmonic_-_On_The_Moon_(Trip_Hop_mix).xml A separate document]* With the XML page [http://wwwmetadata stream type must address this issue of collective metadata while still allowing description of individual streams.srcfIt should also allow temporal addressability, so that changes can be described.ucam.org/~ibm21/disharmonic_Because the in-_On_The_Moon_(Trip_Hop_mix).multi.ogg repeated after every fifth Vorbis page].* With stream comment metadata are part of the codec headers, it cannot change over the course of the XML page repeated after every fifth Vorbis page stream, and allowing additional comment packets elsewhere in the [http://wwwstream presents seeking challenges.srcf.ucam.org/~ibm21/disharmonic_In the Ogg container this can be resolved by inserting a chain boundary, but this is a poor option for very-low-_On_The_Moon_(Trip_Hop_mix).endbitrate streams and unreliable transports such as RTP.ogg stream ending on a meta data page]

Navigation menu