Metadata: Difference between revisions

From XiphWiki
Jump to navigation Jump to search
No edit summary
(Changed tense of M3F + tidy)
 
(100 intermediate revisions by 29 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 ==


This works well enough for most things, and can be overloaded/abused (depending on your point of view)
Metadata is included in the FLAC codec as METADATA_BLOCK_DATA. Seven types of metadata block are defined: 
for most other things. But there are three major requirements that point to the design of an external
#''METADATA_BLOCK_STREAMINFO'': Sample rate, number of channels, etc.
metadata format; one that can be interleaved with the other streams in a container.
#''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.


* ''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.
== [[Ogg Skeleton]] ==


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


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


==Proposed Solutions==
== [[OggKate]] ==


RDF + dublin core
[[OggKate]] was originally designed for karaoke and text. The stream can carry text and images, and these can be animated.


XML-encoding (generic rdf or CMML?)
== [[CMML]] (deprecated) ==


binary encoding (three-component length-encoded binary vectors)
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.
[http://www.shop263.com/i8-3/234.htm 呼吸系统]
[http://www.shop263.com/i8-3/235.htm 槲皮素]
[http://www.shop263.com/i8-3/236.htm 化肥片]
[http://www.shop263.com/i8-3/237.htm 化工防腐设备]
[http://www.shop263.com/i8-3/238.htm 化积口服液]
[http://www.shop263.com/i8-3/239.htm 化学合成药]
[http://www.shop263.com/i8-3/240.htm 化学原料药]
[http://www.shop263.com/i8-3/241.htm 环孢菌素软胶囊]
[http://www.shop263.com/i8-3/242.htm 环丙氯地孕酮]
[http://www.shop263.com/i8-3/243.htm 环丙沙星]
[http://www.shop263.com/i8-3/244.htm 环氧环己烷]
[http://www.shop263.com/i8-3/245.htm 黄连素]
[http://www.shop263.com/i8-3/246.htm 黄嘌呤]
[http://www.shop263.com/i8-3/247.htm 黄体酮]
[http://www.shop263.com/i8-3/248.htm 肌苷]
[http://www.shop263.com/i8-3/249.htm 基因工程白细胞介素]
[http://www.shop263.com/i8-3/250.htm 基因工程干扰素]
[http://www.shop263.com/i8-3/251.htm 基因工程药品]
[http://www.shop263.com/i8-3/252.htm 基因重组人白细胞介素]
[http://www.shop263.com/i8-3/253.htm 加巴喷丁]
[http://www.shop263.com/i8-3/254.htm 甲醇]
[http://www.shop263.com/i8-3/255.htm 甲醇催化剂]
[http://www.shop263.com/i8-3/256.htm 甲肝]
[http://www.shop263.com/i8-3/257.htm 甲磺酸帕珠沙星]
[http://www.shop263.com/i8-3/258.htm 甲基多巴]
[http://www.shop263.com/i8-3/259.htm 甲醛]
[http://www.shop263.com/i8-3/260.htm 降凝干加剂]
[http://www.shop263.com/i8-3/261.htm 胶囊]
[http://www.shop263.com/i8-3/262.htm 清洁剂]
[http://www.shop263.com/i8-3/263.htm 结核类]
[http://www.shop263.com/i8-3/264.htm 结晶山梨醇]
[http://www.shop263.com/i8-3/265.htm 解热镇痛类]
[http://www.shop263.com/i8-3/266.htm 解热镇痛类药物]
[http://www.shop263.com/i8-3/267.htm 金钱通淋]
[http://www.shop263.com/i8-3/268.htm 金银花]
[http://www.shop263.com/i8-3/269.htm 浸膏]
[http://www.shop263.com/i8-3/270.htm 精神病类]
[http://www.shop263.com/i8-3/271.htm 精细化工]
[http://www.shop263.com/i8-3/272.htm 咖啡因]
[http://www.shop263.com/i8-3/273.htm 卡马西平]
[http://www.shop263.com/i8-3/274.htm 坎地沙坦]
[http://www.shop263.com/i8-3/275.htm 康迈欣]
[http://www.shop263.com/i8-3/276.htm 康素]
[http://www.shop263.com/i8-3/277.htm 抗病毒类]
[http://www.shop263.com/i8-3/278.htm 抗感染类]
[http://www.shop263.com/i8-3/279.htm 抗过敏类]
[http://www.shop263.com/i8-3/280.htm 抗生素]
[http://www.shop263.com/i8-3/281.htm 抗雄激素]
[http://www.shop263.com/i8-3/282.htm 抗氧剂]
[http://www.shop263.com/i8-3/283.htm 抗真菌类]
[http://www.shop263.com/i8-3/284.htm 抗肿瘤类]
[http://www.shop263.com/i8-3/285.htm 口服固体制剂]
[http://www.shop263.com/i8-3/286.htm 口服葡萄糖]
[http://www.shop263.com/i8-3/287.htm 口服液]
[http://www.shop263.com/i8-3/288.htm 口服制剂]
[http://www.shop263.com/i8-3/289.htm 矿产无机镁业]
[http://www.shop263.com/i8-3/290.htm 拉呋替丁]
[http://www.shop263.com/i8-3/291.htm 兰粒子]
[http://www.shop263.com/i8-3/292.htm 劳拉西洋]
[http://www.shop263.com/i8-3/293.htm 雷替曲塞]
[http://www.shop263.com/i8-3/294.htm 立安]
[http://www.shop263.com/i8-3/295.htm 利巴韦林]
[http://www.shop263.com/i8-3/296.htm 利福定]
[http://www.shop263.com/i8-3/297.htm 利福平]
[http://www.shop263.com/i8-3/298.htm 利福平片痛血康胶囊]
[http://www.shop263.com/i8-3/299.htm 利高霉素]
[http://www.shop263.com/i8-3/300.htm 利眠宁]
[http://www.shop263.com/i8-3/301.htm 利培酮]
[http://www.shop263.com/i8-3/302.htm 利血平]
[http://www.shop263.com/i8-3/303.htm 邻氨基苯甲酰胺]
[http://www.shop263.com/i8-3/304.htm 临床研究]
[http://www.shop263.com/i8-3/305.htm 羚羊感冒胶囊]
[http://www.shop263.com/i8-3/306.htm 硫酸庆大霉素]
[http://www.shop263.com/i8-3/307.htm 硫酸软骨素]
[http://www.shop263.com/i8-3/308.htm 硫酸双肼屈嗪]
[http://www.shop263.com/i8-3/309.htm 硫酸小诺霉素]
[http://www.shop263.com/i8-3/310.htm 芦丁]
[http://www.shop263.com/i8-3/311.htm 绿动力]
[http://www.shop263.com/i8-3/312.htm 氯氮]
[http://www.shop263.com/i8-3/313.htm 氯氮平中间体]
[http://www.shop263.com/i8-3/314.htm 氯氮卓]
[http://www.shop263.com/i8-3/315.htm 氯喹侧链]
[http://www.shop263.com/i8-3/316.htm 氯霉素]
[http://www.shop263.com/i8-3/317.htm 罗格列酮]
[http://www.shop263.com/i8-3/318.htm 罗红霉素]
[http://www.shop263.com/i8-3/319.htm 罗红霉素侧链]
[http://www.shop263.com/i8-3/320.htm 洛伐他汀]
[http://www.shop263.com/i8-3/321.htm 洛索洛芬钠片]
[http://www.shop263.com/i8-3/322.htm 麻醉药品]
[http://www.shop263.com/i8-3/323.htm 马杜霉素]
[http://www.shop263.com/i8-3/324.htm 马来酸依索拉啶]
[http://www.shop263.com/i8-3/325.htm 马吲哚]
[http://www.shop263.com/i8-3/326.htm 吗啉]
[http://www.shop263.com/i8-3/327.htm 梅毒]
[http://www.shop263.com/i8-3/328.htm 美洛]
[http://www.shop263.com/i8-3/329.htm 美司]
[http://www.shop263.com/i8-3/330.htm 美替诺龙]
[http://www.shop263.com/i8-3/331.htm 米非司酮]
[http://www.shop263.com/i8-3/332.htm 米托蒽醌]
[http://www.shop263.com/i8-3/333.htm 免疫移植]
[http://www.shop263.com/i8-3/334.htm 茉莉花]
[http://www.shop263.com/i8-3/335.htm 茉莉花净油]
[http://www.shop263.com/i8-3/336.htm 那琦]
[http://www.shop263.com/i8-3/337.htm 耐博利]
[http://www.shop263.com/i8-3/338.htm 尿素]
[http://www.shop263.com/i8-3/339.htm 牛磺酸]
[http://www.shop263.com/i8-3/340.htm 农药增效剂]
[http://www.shop263.com/i8-3/341.htm 诺氟沙星]
[http://www.shop263.com/i8-3/342.htm 诺氟沙星胶囊]
[http://www.shop263.com/i8-3/343.htm 诺孕酯]
[http://www.shop263.com/i8-3/344.htm 潘托拉唑钠]
[http://www.shop263.com/i8-3/345.htm 培菲康]
[http://www.shop263.com/i8-3/346.htm 喷昔洛韦]
[http://www.shop263.com/i8-3/347.htm 皮质激素]
[http://www.shop263.com/i8-3/348.htm 片剂]
[http://www.shop263.com/i8-3/349.htm 片剂混悬剂]
[http://www.shop263.com/i8-3/350.htm 肉桂酸]
[http://www.shop263.com/i8-3/351.htm 乳酸环丙沙星]
[http://www.shop263.com/i8-3/352.htm 乳糖酸红霉素]
[http://www.shop263.com/i8-3/353.htm 乳糖酸钠]
[http://www.shop263.com/i8-3/354.htm 三甲基氢醌]
[http://www.shop263.com/i8-3/355.htm 三抗素蒲地蓝消炎片]
[http://www.shop263.com/i8-3/356.htm 三磷酸腺苷二钠]
[http://www.shop263.com/i8-3/357.htm 三氯生广谱抗菌剂]
[http://www.shop263.com/i8-3/358.htm 沙坦主环]
[http://www.shop263.com/i8-3/359.htm 鲨肝醇]
[http://www.shop263.com/i8-3/360.htm 山梨醇]
[http://www.shop263.com/i8-3/361.htm 山楂精降脂片]
[http://www.shop263.com/i8-3/362.htm 蛇胆川贝胶囊]
[http://www.shop263.com/i8-3/363.htm 生化药物]
[http://www.shop263.com/i8-3/364.htm 生物发酵原料药]
[http://www.shop263.com/i8-3/365.htm 生物工程制品]
[http://www.shop263.com/i8-3/366.htm 生物农药]
[http://www.shop263.com/i8-3/367.htm 十一酸睾酮胶丸]
[http://www.shop263.com/i8-3/368.htm 食品添加剂]
[http://www.shop263.com/i8-3/369.htm 手性药物]
[http://www.shop263.com/i8-3/370.htm 手性吲哚生物碱]
[http://www.shop263.com/i8-3/371.htm 兽药]
[http://www.shop263.com/i8-3/372.htm 兽药医药原料药]
[http://www.shop263.com/i8-3/373.htm 输液]
[http://www.shop263.com/i8-3/374.htm 薯芋皂素]
[http://www.shop263.com/i8-3/375.htm 双肼呔嗪]
[http://www.shop263.com/i8-3/376.htm 双嘧达莫]
[http://www.shop263.com/i8-3/377.htm 双烯醇酮]
[http://www.shop263.com/i8-3/378.htm 水飞蓟素]
[http://www.shop263.com/i8-3/379.htm 水杨酸]
[http://www.shop263.com/i8-3/380.htm 水针]
[http://www.shop263.com/i8-3/381.htm 四氮唑系列]
[http://www.shop263.com/i8-3/382.htm 饲料添加剂]
[http://www.shop263.com/i8-3/383.htm 塑料编织袋]
[http://www.shop263.com/i8-3/384.htm 钛白粉]
[http://www.shop263.com/i8-3/385.htm 碳酸氢铵]
[http://www.shop263.com/i8-3/386.htm 糖尿病治疗类]
[http://www.shop263.com/i8-3/387.htm 特比萘芬]
[http://www.shop263.com/i8-3/388.htm 特药类]
[http://www.shop263.com/i8-3/389.htm 提取液]
[http://www.shop263.com/i8-3/390.htm 体轻松]
[http://www.shop263.com/i8-3/391.htm 替勃龙]
[http://www.shop263.com/i8-3/392.htm 浸膏油]
[http://www.shop263.com/i8-3/393.htm 茶皂素]
[http://www.shop263.com/i8-3/394.htm 替米沙坦]
[http://www.shop263.com/i8-3/395.htm 天然维生素E]
[http://www.shop263.com/i8-3/396.htm 天然植物]
[http://www.shop263.com/i8-3/397.htm 天然植物浸膏油茶皂素]
[http://www.shop263.com/i8-3/398.htm 田草]
[http://www.shop263.com/i8-3/399.htm 酮基布洛芬胶囊]
[http://www.shop263.com/i8-3/400.htm 痛血康胶囊]
[http://www.shop263.com/i8-3/401.htm 头孢氨苄]
[http://www.shop263.com/i8-3/402.htm 头孢呋辛酸]
[http://www.shop263.com/i8-3/403.htm 头孢菌素]
[http://www.shop263.com/i8-3/404.htm 头孢拉定]
[http://www.shop263.com/i8-3/405.htm 头孢类]
[http://www.shop263.com/i8-3/406.htm 头孢曲松]
[http://www.shop263.com/i8-3/407.htm 头孢三嗪侧链酸]
[http://www.shop263.com/i8-3/408.htm 头孢他啶]
[http://www.shop263.com/i8-3/409.htm 头孢他美酸]
[http://www.shop263.com/i8-3/410.htm 拓扑替康]
[http://www.shop263.com/i8-3/411.htm 万昔络韦]
[http://www.shop263.com/i8-3/412.htm 维甲酸类]
[http://www.shop263.com/i8-3/413.htm 维生素]
[http://www.shop263.com/i8-3/414.htm 维生素B12]
[http://www.shop263.com/i8-3/415.htm 维生素B6]
[http://www.shop263.com/i8-3/416.htm 维生素D]
[http://www.shop263.com/i8-3/417.htm 维生素D2]
[http://www.shop263.com/i8-3/418.htm 维生素D3粉]
[http://www.shop263.com/i8-3/419.htm 维生素D3油]
[http://www.shop263.com/i8-3/420.htm 维生素类]
[http://www.shop263.com/i8-3/421.htm 维生素类衍生物]
[http://www.shop263.com/i8-3/422.htm 维他命]
[http://www.shop263.com/i8-3/423.htm 卫生球]
[http://www.shop263.com/i8-3/424.htm 文拉法辛]
[http://www.shop263.com/i8-3/425.htm 乌苯美司胶囊]
[http://www.shop263.com/i8-3/426.htm 乌洛托品]
[http://www.shop263.com/i8-3/427.htm 无机化工]
[http://www.shop263.com/i8-3/428.htm 戊肝]
[http://www.shop263.com/i8-3/429.htm 西力士]
[http://www.shop263.com/i8-3/430.htm 腺苷]
[http://www.shop263.com/i8-3/431.htm 腺嘌呤]
[http://www.shop263.com/i8-3/432.htm 橡胶]
[http://www.shop263.com/i8-3/433.htm 消毒片]
[http://www.shop263.com/i8-3/434.htm 硝苯地平缓释片]
[http://www.shop263.com/i8-3/435.htm 小容量注射剂]
[http://www.shop263.com/i8-3/436.htm 缬沙坦]
[http://www.shop263.com/i8-3/437.htm 心可舒胶囊]
[http://www.shop263.com/i8-3/438.htm 心血管类]
[http://www.shop263.com/i8-3/439.htm 心血管药物]
[http://www.shop263.com/i8-3/440.htm 辛伐他汀]
[http://www.shop263.com/i8-3/441.htm 新戊酸氯中酯]
[http://www.shop263.com/i8-3/442.htm 干扰素]
[http://www.shop263.com/i8-3/443.htm 活性剂]
[http://www.shop263.com/i8-3/444.htm 新鱼腥草素钠]
[http://www.shop263.com/i8-3/445.htm 信法丁]
[http://www.shop263.com/i8-3/446.htm 信法丁片]
[http://www.shop263.com/i8-3/447.htm 信利妥]
[http://www.shop263.com/i8-3/448.htm 雄激素]
[http://www.shop263.com/i8-3/449.htm 雄性激素]
[http://www.shop263.com/i8-3/450.htm 熊去氧胆酸片]
[http://www.shop263.com/i8-3/451.htm 溴米那]
[http://www.shop263.com/i8-3/452.htm 畜卫佳]
[http://www.shop263.com/i8-3/453.htm 血脉宁]
[http://www.shop263.com/i8-3/454.htm 血压达静]
[http://www.shop263.com/i8-3/455.htm 樟脑球]
[http://www.shop263.com/i8-3/456.htm 牙周宁片]
[http://www.shop263.com/i8-3/457.htm 亚麻酸]
[http://www.shop263.com/i8-3/458.htm 亚麻酸活力软胶囊]
[http://www.shop263.com/i8-3/459.htm 亚叶酸钙]
[http://www.shop263.com/i8-3/460.htm 盐霉素]
[http://www.shop263.com/i8-3/461.htm 盐酸阿扎司琼]
[http://www.shop263.com/i8-3/462.htm 盐酸奥昔布宁]
[http://www.shop263.com/i8-3/463.htm 盐酸蒽诺沙星]
[http://www.shop263.com/i8-3/464.htm 盐酸伐昔洛韦]
[http://www.shop263.com/i8-3/465.htm 盐酸氟哌酸]
[http://www.shop263.com/i8-3/466.htm 盐酸环丙沙星]


== [[M3F]] (unused draft) ==


[[M3F|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:
* 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.


== 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?


[http://www.haishun.net 门禁]
* '''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.
[http://www.haishun.net 监控]
[http://www.genset-sh.com 发电机]
[http://www.haishun.net/p_mjds.htm 门禁]
[http://www.haishun.net/p_mjds_dmmj.htm 门禁]
[http://www.haishun.net/p_mjds_lwmj.htm 门禁]
[http://www.haishun.net/p_mjds_yjs.htm 门禁]
[http://www.haishun.net/cctv.htm 监控]
[http://www.haishun.net/p_cctv_jk.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_yplxj.htm 监控]
[http://www.haishun.net/p_cctv_jk_yt.htm 监控]
[http://www.haishun.net/p_cctv_jk_zj.htm 监控]
[http://www.7766888.com 虚拟主机]
[http://www.7766888.com/introcom.htm asp虚拟主机]
[http://www.7766888.com/introcn.htm php虚拟主机]
[http://www.7766888.com/u_puji.htm unix虚拟主机]
[http://www.7766888.com/mysql.htm windows虚拟主机]
[http://www.7766888.com/u_jingji.htm 纯空间虚拟主机]
[http://www.7766888.com/u_biaozhun.htm 虚拟主机]
[http://www.7766888.com/u_zhiqiang.htm 虚拟主机]
[http://www.7766888.com/w_jingji.htm 虚拟主机]
[http://www.7766888.com/w_biaozhun.htm 虚拟主机]
[http://www.asp169.com/marketingsoft1.htm 空压机]
[http://www.asp169.com/marketingsoft2.htm 压缩机]
[http://www.asp169.com/zhaoguan.htm 消毒剂]
[http://www.asp169.com/crm.htm 化妆品]
[http://www.asp169.com/marketingsoft3.htm 战略咨询]
[http://www.asp169.com/marketingsoft4.htm 武夷山]
[http://www.asp169.com/marketingsoft5.htm 数据恢复]
[http://haishun11.51.net 虚拟主机]
[http://decorate.51.net 装修]
[http://decorate.51.net 团购]
[http://www.xsjby.cn 化工泵]
[http://www.asp169.com/zhaoguan2.htm 二氧化氯]
[http://www.fm360.net 网址大全]
[http://www.fm360.net/page/001.html 网址大全]
[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 网址大全]
[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/025.html 网址大全]
[http://www.fm360.net/page/hardware.htm 网址大全]
[http://www.fm360.net/page/sport.htm 网址大全]
[http://www.fm360.net/page/shouji.htm 网址大全]
[http://www.fm360.net/page/ym.htm 网址大全]
[http://www.fm360.net/page/ylbj.htm 网址大全]
[http://www.fm360.net/page/car.htm 网址大全]
[http://www.jifamark.com 线号机]
[http://www.jifamark.com/xhj.htm 线号机]
[http://www.jifamark.com 打号机]
[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/design/index.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.genset-sh.com/cai.asp 发电机]
[http://www.genset-sh.com/tancu.asp 发电机]
[http://www.genset-sh.com/xi3.asp 发电机]
[http://www.genset-sh.com/lan.asp 发电机]
[http://www.genset-sh.com/leng.asp 发电机]
[http://www.genset-sh.com/jiyou.asp 发电机]
[http://www.genset-sh.com/ranyou.asp 发电机]
[http://www.genset-sh.com/kuongqi.asp 发电机]
[http://www.genset-sh.com/ssss.asp 发电机]
[http://www.zj-df.com 减速机]
[http://www.xhhj.com.cn 离心机]
[http://www.hdfix.com.cn 数据恢复]

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.