Metadata: Difference between revisions

From XiphWiki
Jump to navigation Jump to search
No edit summary
(Changed tense of M3F + tidy)
 
(95 intermediate revisions by 26 users not shown)
Line 1: Line 1:
==Motivation==
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.
 
== [[VorbisComment]]s ==


All the Xiph.org codecs have some internal mechanism for including metadata about the current stream.
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],  
Generally, this is one of the codec headers, and in the words of the [http://www.xiph.org/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."
"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.
 
== [[OggKate]] ==
 
[[OggKate]] was originally designed for karaoke and text. The stream can carry text and images, and these can be animated.
 
== [[CMML]] (deprecated) ==
 
CMML is not used anymore; use [[OggKate]] instead. The [[CMML|Continuous Media Markup Language]] allowed time-based marking up of media streams, at its simplest this allowed you to divide media files into clips and provide information about each clip.
 
== [[M3F]] (unused draft) ==


This works well enough for most things, and can be overloaded/abused (depending on your point of view)
[[M3F|Multimedia Metadata Format]] is not being developed anymore; use [[VorbisComment]] instead.
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.


* ''Machinability'' There are a number of items of metadata that a player will want to parse and take action on. While there are usually 'convention' schemes for doing this with the embedded comment headers, this is much easier if there is a separate metadata stream designed for such use, 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 these reliably can match them against a language preference list configured by the user to automatically select and begin playback of the best option.
The 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."


* ''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?
[[M3F]] for the Ogg container was a draft specification which aimed to provide metadata for media streams. The 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.


* ''Addressability'' The internal comment metadata headers are by necessity attached to a single content stream. This is useful for some appication, but a limitation in others. 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 of individual 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 this can be resolved by inserting a chain boundary, but this is a poor option for very-low-bitrate streams and unreliable transports such as RTP.
== [[XMLEmbedding]] (unused draft) ==


==Proposed Solutions==
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]
* [http://wiki.musicbrainz.org/MusicBrainzXMLMetaData MusicBrainz]
* [http://www.w3.org/Graphics/SVG/ SVG]
This specification is still not past the discussion stage.


RDF + dublin core
== Aims of advanced metadata ==


XML-encoding (generic rdf or CMML?)
VorbisComments work 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.
[http://www.sec66.com/ym001/pro.asp 空压机]
[http://www.sec66.com/ym001/cp_list.asp?sb=1 压缩机]
[http://www.genset-sh.com 发电机]
[http://www.hdfix.com.cn 数据恢复]
[http://www.1-sh.cn 一号通]
[http://www.funasia.cn 装修]
[http://www.funasia.cn 团购]
[http://www.funasia.cn/pinpai.asp 装潢]
[http://www.funasia.cn/client/gb_list.asp 装潢]
[http://www.funasia.cn/funasiaHome/index.asp 装修]
[http://www.funasia.cn/jiancai.asp 装修]
[http://www.funasia.cn/shishang.asp 装修]
[http://www.funasia.cn/mall/AboutOur.htm 团购]
[http://www.zzhtjx.com 粉碎机]
[http://www.haishun.net 门禁]
[http://www.haishun.net/cctv.htm 监控]
[http://www.haishun.net/p_cctv_jk.htm 监控]
[http://www.haishun.net/p_cctv_jk_jt.htm 监控]
[http://www.haishun.net/p_cctv_jk_sxj.htm 监控]
[http://www.haishun.net/p_cctv_jk_xsq.htm 监控]
[http://www.haishun.net/p_cctv_jk_yt.htm 监控]
[http://www.haishun.net/p_cctv_jk_zj.htm 监控]
[http://www.haishun.net/p_mjds.htm 门禁]
[http://www.haishun.net/p_mjds_dmmj.htm 门禁]
[http://www.haishun.net/p_mjds_cls.htm 门禁]
[http://www.haishun.net/p_mjds_yjs.htm 门禁]
[http://haishun11.51.net 虚拟主机]
[http://www.zhaoguan.com 二氧化氯]
[http://fireworks.garrywa.com fireworks]
[http://global.garrywa.com/index1.htm gemstone globe]
[http://www.haishun.net 监控]
[http://www.fm360.net 网址大全]
[http://www.fm360.net/page/game.htm 游戏网址大全]
[http://www.fm360.net/page/software.htm 下载网址大全]
[http://www.fm360.net/page/jinshi.htm 军事网址大全]
[http://www.fm360.net/page/music.htm 音乐网址大全]
[http://www.fm360.net/page/053.html 邮箱网址大全]
[http://www.fm360.net/page/flash.htm FLASH网址大全]
[http://www.fm360.net/page/newsweek.htm 新闻网址大全]
[http://www.fm360.net/page/club.htm 社区网址大全]
[http://www.fm360.net/page/stock.htm 证券网址大全]
[http://www.fm360.net/page/love.htm 爱情网址大全]
[http://www.fm360.net/page/netcard.htm 贺卡网址大全]
[http://www.fm360.net/page/book.htm 文学网址大全]
[http://www.fm360.net/page/001.html 聊天网址大全]
[http://www.conjhost.com 虚拟主机]
[http://fireworks.garrywa.com/fireworks/fireworks.htm fireworks]
[http://www.conjhost.com 虚拟主机]
[http://www.sms88.cn 短信群发]
[http://www.sms88.cn/xiazai.htm 短信群发软件]
[http://www.a688.net/info.htm 企业名录]
[http://www.21cnnet.net 网络营销]
[http://www.w1688.com/index1.htm 信息发布]
[http://www.w1688.com/index2.htm 网站登录]
[http://www.sec66.com 空压机]
[http://www.sec66.com 压缩机]
[http://www.w1688.com/mailadd.htm 邮件群发]
[http://www.w1688.com/web.htm 短信群发]
[http://www.w1688.com/i8.htm 企业名录]
[http://www.w1688.com/mailadd1.htm 邮件地址搜索]
[http://www.w1688.com/mailadd2.htm 邮件地址管理]


[http://www.108888.com 温湿度]
* '''Machinability:''' There are a number of items of metadata that a player will want to parse and take action on. While there are usually 'convention' schemes for doing this with the embedded comment headers, this is much easier if there is a separate metadata stream designed for such use, 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 these reliably can match them against a language preference list configured by the user to automatically select and begin playback of the best option.
[http://www.208888.com 管道]
[http://www.308888.com 催化剂]
[http://www.408888.com 电子秤]
[http://www.508888.com 电加热器]
[http://www.708888.com 开关柜]
[http://www.300888.com 建材机械]
[http://www.500888.com 保险柜]
[http://www.700888.com 电路板]
[http://www.900888.com 乳胶漆]
[http://www.106666.com 工程塑料]
[http://www.206666.com 特许经营]
[http://www.1006666.com 楼宇自控]
[http://www.2006666.com 喷码机]
[http://www.306666.com 液位计]
[http://www.3006666.com 聚丙烯酰胺]
[http://www.506666.com 电磁铁]
[http://www.606666.com 超市设备]
[http://www.5006666.com 薄膜开关]
[http://www.6006666.com 指纹考勤]
[http://www.706666.com 渔具]
[http://www.7006666.com 跑步机]
[http://www.806666.com 防腐设备]
[http://www.8006666.com 锁具]
[http://www.906666.com 弹簧]
[http://www.9006666.com 纸箱]
[http://www.0001111.com 煤炭]
[http://www.00001111.com 保龄球]
[http://www.0003333.com 木地板]
[http://www.00005555.com 家用电器]
[http://www.0005555.com 植绒]
[http://www.0006666.com 钻头]
[http://www.00007777.com 冲压件]
[http://www.0008888.com 建筑机械]
[http://www.1236666.com 实木地板]
[http://www.3456666.com 捏合机]
[http://www.13088888888.com 整流器]
[http://www.13288888888.com 酒店用品]
[http://www.13588888888.com 升降台]
[http://www.13688888888.com 转换器]
[http://www.13788888888.com 软件下载]
[http://www.13888888888.com 喷砂机]
[http://www.02088888888.com 制罐]
[http://www.02288888888.com 工业炉]
[http://www.02188888888.com 生产线]
[http://www.02388888888.com 瓷器]
[http://www.02588888888.com 搅拌机]
[http://www.02788888888.com 印刷机械]
[http://www.3698888.com 综合布线]
[http://www.1478888.com 避雷器]
[http://www.888777888.com 减震器]
[http://www.8899888888.com 色织]
[http://www.8877888888.com 燃烧器]
[http://www.8866888888.com 机电设备]
[http://www.8855888888.com 防雷器]
[http://www.8833888888.com 地坪]
[http://www.8822888888.com 纸品
[http://www.8811888888.com 冷弯型钢]
[http://www.7799888888.com 木工机械]
[http://www.7788888888.com 物流设备]
[http://www.7766888888.com 铁塔]
[http://www.7755888888.com 非开挖]
[http://www.7733888888.com 热电偶]
[http://www.7722888888.com 保险箱]
[http://www.6666888888.com 吸塑机]
[http://www.6655888888.com 喷漆]
[http://www.6633888888.com 过滤材料]
[http://www.6622888888.com 电刷]
[http://www.6611888888.com冷水机]
[http://www.5599888888.com 采暖]
[http://www.5588888888.com 机械加工]
[http://www.5577888888.com 照相器材]
[http://www.5566888888.com 电镀原料]
[http://www.5555888888.com 毛毡]
[http://www.5533888888.com 交通设施]
[http://www.5522888888.com 消毒机]
[http://www.5511888888.com 压滤机]
[http://www.3399888888.com 刻字机]
[http://www.3377888888.com 接口转换器]
[http://www.3366888888.com 电视电话会议]
[http://www.3311888888.com 贴纸相机]
[http://www.2299888888.com 橡胶机械]
[http://www.2277888888.com 喷泉设备]
[http://www.2266888888.com 丝印]
[http://www.2255888888.com 精细化工]
[http://www.2233888888.com 塑胶玩具]
[http://www.3355888888.com 五金模具]
[http://www.3333888888.com 电子设备]
[http://www.3322888888.com 企业形象设计]
[http://www.2211888888.com 指纹识别]
[http://www.1199888888.com 搬运车]
[http://www.1188888888.com 牛仔布]
[http://www.1177888888.com 电动车配件]
[http://www.1166888888.com 会议系统]
[http://www.1155888888.com 终端服务器]
[http://www.1133888888.com 录音笔]
[http://www.1122888888.com 球磨机]
[http://www.999999888.com 园林设计]
[http://www.999777888.com 路由器]
[http://www.999666999.com 手套箱]
[http://www.999555888.com 实验室设备]
[http://www.999333888.com 童装]
[http://www.999222888.com 手机美容]
[http://www.999111888.com 户外用品]
[http://www.888888999.com 证卡]
[http://www.888999888.com 机床附件]
[http://www.888555888.com 彩电]
[http://www.888333888.com 酒店管理]
[http://www.888222888.com 电话录音]
[http://www.888111888.com 油墨]
[http://www.777777888.com 布线]
[http://www.777999888.com 蜡烛]
[http://www.777666888.com 印刷包装]
[http://www.777555888.com 表面活性剂]
[http://www.777333888.com 节能灯]
[http://www.777222888.com 调味品]
[http://www.777111888.com 齿轮]
[http://www.666999888.com 高压泵]
[http://www.666666888.com 红外热像仪]
[ttp://www.666333888.com 塑料托盘]
[http://www.666222888.com 吊带]
[http://www.666111888.com 工业锅炉]
[http://www.555999888.com 休闲服]
[http://www.555777888.com 反光材料]
[http://www.555555888.com 印刷设备]
[http://www.555333888.com 足球推介]
[http://www.555222888.com 热处理]
[http://www.555111888.com 压铸]
[http://www.1111166666.com 商标注册]
[http://www.1111199999.com 喷灌]
[http://www.1111188888.com 逆变器]
[http://www.2222228888.com 输送带]
[http://www.2221118888.com 锻造]
[http://www.1119998888.com 车库门]
[http://www.1118888888.com 体育器材]
[http://www.1117778888.com 太阳能热水器]
[http://www.1116668888.com 绝缘材料]
[http://www.1115558888.com 焊管]
[http://www.1113338888.com 鼓风机]
[http://www.1112228888.com 试验]
[http://www.111166666.com 插座]
[http://www.111155555.com 艺术品]
[http://www.111133333.com 矿山机械]
[http://www.111122222.com 图像监控]
[http://www.333888888.com 无缝钢管]
[http://www.333777888.com 激光切割]
[http://www.333555888.com 标签打印机]
[http://www.333333888.com 燃气表]
[http://www.333111888.com 手机配件]
[http://www.3331118888.com 卫星定位]
[http://www.2229998888.com 印染]
[http://www.2228888888.com 玻璃机械]
[http://www.2226668888.com 铝型材]
[http://www.2225558888.com 注塑]
[http://www.1111133333.com 液压升降机]
[http://www.999998888.com 打标机]
[http://www.777778888.com 工具柜]
[http://www.666668888.com 焚烧炉]
[http://www.555558888.com 电力设备]
[http://www.333338888.com 干燥剂]
[http://www.222228888.com 计量泵]
[http://www.111118888.com 程控交换机]


* '''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?


binary encoding (three-component length-encoded binary vectors)
* '''Addressability:''' The internal comment metadata headers are by necessity attached to a single content stream. This is useful for some appication, but a limitation in others. 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 of individual 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 this can be resolved by inserting a chain boundary, but this is a poor option for very-low-bitrate streams and unreliable transports such as RTP.

Latest revision as of 12:44, 24 July 2013

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 Multimedia Metadata Format (M3F) provides more sophisticated information.

VorbisComments

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

  1. METADATA_BLOCK_STREAMINFO: Sample rate, number of channels, etc.
  2. METADATA_BLOCK_PADDING: Nul padding.
  3. METADATA_BLOCK_APPLICATION: Third-party applications can register an ID. Metadata is typically 32-bit integers, but any datatypes can be specified.
  4. METADATA_BLOCK_SEEKTABLE: For one or more seek points.
  5. 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.
  6. METADATA_BLOCK_CUESHEET: Typically, but not necessarily, for CD-DA (Red Book) cuesheets.
  7. 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.

OggKate

OggKate was originally designed for karaoke and text. The stream can carry text and images, and these can be animated.

CMML (deprecated)

CMML is not used anymore; use OggKate instead. The Continuous Media Markup Language allowed time-based marking up of media streams, at its simplest this allowed you to divide media files into clips and provide information about each clip.

M3F (unused draft)

Multimedia Metadata Format is not being developed anymore; use VorbisComment instead.

The 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."

M3F for the Ogg container was a draft specification which aimed to provide metadata for media streams. The 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.

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:

This specification is still not past the discussion stage.

Aims of advanced metadata

VorbisComments work 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.

  • Machinability: There are a number of items of metadata that a player will want to parse and take action on. While there are usually 'convention' schemes for doing this with the embedded comment headers, this is much easier if there is a separate metadata stream designed for such use, 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 these reliably can match them against a language preference list configured by the user to automatically select and begin playback of the best option.
  • 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?
  • Addressability: The internal comment metadata headers are by necessity attached to a single content stream. This is useful for some appication, but a limitation in others. 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 of individual 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 this can be resolved by inserting a chain boundary, but this is a poor option for very-low-bitrate streams and unreliable transports such as RTP.