Metadata: Difference between revisions

From XiphWiki
Jump to navigation Jump to search
No edit summary
(Changed tense of M3F + tidy)
 
(102 intermediate revisions by 30 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/1.htm 维生素D3]
[http://www.shop263.com/i8-3/2.htm 叶酸]
[http://www.shop263.com/i8-3/3.htm 伊特安]
[http://www.shop263.com/i8-3/4.htm 伊维菌素]
[http://www.shop263.com/i8-3/5.htm 医疗服务]
[http://www.shop263.com/i8-3/6.htm 结晶山梨醇]
[http://www.shop263.com/i8-3/7.htm 医药原料药]
[http://www.shop263.com/i8-3/8.htm 医药制剂]
[http://www.shop263.com/i8-3/9.htm 医药中间体]
[http://www.shop263.com/i8-3/10.htm 消毒药剂]
[http://www.shop263.com/i8-3/11.htm 依立替康]
[http://www.shop263.com/i8-3/12.htm 依普瑞丰]
[http://www.shop263.com/i8-3/13.htm 依托红霉素片]
[http://www.shop263.com/i8-3/14.htm 依维菌素]
[http://www.shop263.com/i8-3/15.htm 依西美坦]
[http://www.shop263.com/i8-3/16.htm 乙胺丁醇]
[http://www.shop263.com/i8-3/17.htm 乙肝]
[http://www.shop263.com/i8-3/18.htm 乙酰吉他霉素颗粒剂]
[http://www.shop263.com/i8-3/19.htm 异烟肼]
[http://www.shop263.com/i8-3/20.htm 异烟酸]
[http://www.shop263.com/i8-3/21.htm 益比奥]
[http://www.shop263.com/i8-3/22.htm 因特芬]
[http://www.shop263.com/i8-3/23.htm 吲达帕胺片]
[http://www.shop263.com/i8-3/24.htm 吲哚生物碱]
[http://www.shop263.com/i8-3/25.htm 茚满酮]
[http://www.shop263.com/i8-3/26.htm 英路因]
[http://www.shop263.com/i8-3/27.htm 营养强化剂]
[http://www.shop263.com/i8-3/28.htm 硬胶囊]
[http://www.shop263.com/i8-3/29.htm 硬脂酸]
[http://www.shop263.com/i8-3/30.htm 硬脂酸红霉素]
[http://www.shop263.com/i8-3/31.htm 原料药]
[http://www.shop263.com/i8-3/32.htm 右旋糖酐铁]
[http://www.shop263.com/i8-3/33.htm 玉米淀粉]
[http://www.shop263.com/i8-3/34.htm 愈创木酚]
[http://www.shop263.com/i8-3/35.htm 愈创木酚甘油醚]
[http://www.shop263.com/i8-3/36.htm 愈创木酚磺酸钾]
[http://www.shop263.com/i8-3/37.htm 原料药]
[http://www.shop263.com/i8-3/38.htm 洗衣粉]
[http://www.shop263.com/i8-3/39.htm 孕激素]
[http://www.shop263.com/i8-3/40.htm 甾体激素]
[http://www.shop263.com/i8-3/41.htm 激素]
[http://www.shop263.com/i8-3/42.htm 甾体激素类]
[http://www.shop263.com/i8-3/43.htm 樟脑丸]
[http://www.shop263.com/i8-3/44.htm 针剂]
[http://www.shop263.com/i8-3/45.htm 芝麻酚]
[http://www.shop263.com/i8-3/46.htm 植物药]
[http://www.shop263.com/i8-3/47.htm 原料药]
[http://www.shop263.com/i8-3/48.htm 止痛灵]
[http://www.shop263.com/i8-3/49.htm 成品药]
[http://www.shop263.com/i8-3/50.htm 制药]
[http://www.shop263.com/i8-3/51.htm 心血管]
[http://www.shop263.com/i8-3/52.htm 中成药]
[http://www.shop263.com/i8-3/53.htm 中间体]
[http://www.shop263.com/i8-3/54.htm 中枢神经]
[http://www.shop263.com/i8-3/55.htm 片剂模具]
[http://www.shop263.com/i8-3/56.htm 中西药制剂]
[http://www.shop263.com/i8-3/57.htm 中药种植]
[http://www.shop263.com/i8-3/58.htm 肿瘤标志物]
[http://www.shop263.com/i8-3/59.htm 重组人红细胞生成素]
[http://www.shop263.com/i8-3/60.htm 重组人粒细胞]
[http://www.shop263.com/i8-3/61.htm 重组人粒细胞集落刺激因子]
[http://www.shop263.com/i8-3/62.htm 朱砂莲胶囊]
[http://www.shop263.com/i8-3/63.htm 注射剂]
[http://www.shop263.com/i8-3/64.htm 注射葡萄糖]
[http://www.shop263.com/i8-3/65.htm 左西孟旦]
[http://www.shop263.com/i8-3/66.htm 左西替利嗪]
[http://www.shop263.com/i8-3/67.htm 聚合物驱油剂]
[http://www.shop263.com/i8-3/68.htm 睾丸素]
[http://www.shop263.com/i8-3/69.htm 格列美脲]
[http://www.shop263.com/i8-3/70.htm 葛根芩连片]
[http://www.shop263.com/i8-3/71.htm 更昔洛韦]
[http://www.shop263.com/i8-3/72.htm 庚肝]
[http://www.shop263.com/i8-3/73.htm 谷维素片]
[http://www.shop263.com/i8-3/74.htm 光敏剂]
[http://www.shop263.com/i8-3/75.htm 广谱抗菌剂]
[http://www.shop263.com/i8-3/76.htm 国家二类新药]
[http://www.shop263.com/i8-3/77.htm 过氧乙酸]
[http://www.shop263.com/i8-3/78.htm 合成药物]
[http://www.shop263.com/i8-3/79.htm 核酸]
[http://www.shop263.com/i8-3/80.htm 恒欣]
[http://www.shop263.com/i8-3/81.htm 红霉素肟]
[http://www.shop263.com/i8-3/82.htm 葡甲胺]
[http://www.shop263.com/i8-3/83.htm 葡萄糖]
[http://www.shop263.com/i8-3/84.htm 葡乙胺]
[http://www.shop263.com/i8-3/85.htm 奇净康]
[http://www.shop263.com/i8-3/86.htm 祺泰GINA]
[http://www.shop263.com/i8-3/87.htm 蕲蛇酶注射液]
[http://www.shop263.com/i8-3/88.htm 强化戊二醛]
[http://www.shop263.com/i8-3/89.htm 强力霉素]
[http://www.shop263.com/i8-3/90.htm 强盛]
[http://www.shop263.com/i8-3/91.htm 羟基氯喹侧链]
[http://www.shop263.com/i8-3/92.htm 青霉素类]
[http://www.shop263.com/i8-3/93.htm 曲克芦丁]
[http://www.shop263.com/i8-3/94.htm 驱蚊片剂]
[http://www.shop263.com/i8-3/95.htm 去氧氟尿苷]
[http://www.shop263.com/i8-3/96.htm 全灭长效驱虫注射液]
[http://www.shop263.com/i8-3/97.htm 全球性原料药]
[http://www.shop263.com/i8-3/98.htm 乙胺盐酸盐]
[http://www.shop263.com/i8-3/99.htm 盐酸洛美沙星]
[http://www.shop263.com/i8-3/100.htm 盐酸谱萘洛尔]
[http://www.shop263.com/i8-3/101.htm 盐酸头孢他美酯]
[http://www.shop263.com/i8-3/102.htm 盐酸头孢他美酯片]
[http://www.shop263.com/i8-3/103.htm 盐酸小檗碱]
[http://www.shop263.com/i8-3/104.htm 盐酸盐]
[http://www.shop263.com/i8-3/105.htm 盐酸左氧氟沙星]
[http://www.shop263.com/i8-3/106.htm 颜料]
[http://www.shop263.com/i8-3/107.htm 氧氟沙星]
[http://www.shop263.com/i8-3/108.htm 氧雄诺龙]
[http://www.shop263.com/i8-3/109.htm 药品流通]
[http://www.shop263.com/i8-3/110.htm 药品注册服务]
[http://www.shop263.com/i8-3/111.htm 药物]
[http://www.shop263.com/i8-3/112.htm 药物中间体]
[http://www.shop263.com/i8-3/113.htm 感光高分子]
[http://www.shop263.com/i8-3/114.htm 破伤风抗毒素]
[http://www.shop263.com/i8-3/115.htm 盐酸环丙沙星胶囊]
[http://www.shop263.com/i8-3/116.htm 甘油]
[http://www.shop263.com/i8-3/117.htm CIPROFLOXACIN]
[http://www.shop263.com/i8-3/118.htm VE烟酸酯胶囊]
[http://www.shop263.com/i8-3/119.htm 阿苯达唑]
[http://www.shop263.com/i8-3/120.htm 阿卡明]
[http://www.shop263.com/i8-3/121.htm 阿拉肽]
[http://www.shop263.com/i8-3/122.htm 阿那曲唑]
[http://www.shop263.com/i8-3/123.htm 阿奇霉]
[http://www.shop263.com/i8-3/124.htm 阿司匹林]
[http://www.shop263.com/i8-3/125.htm 阿替洛尔]
[http://www.shop263.com/i8-3/126.htm 阿维菌素]
[http://www.shop263.com/i8-3/127.htm 阿昔洛韦]
[http://www.shop263.com/i8-3/128.htm 艾滋病]
[http://www.shop263.com/i8-3/129.htm 安宫黄体酮]
[http://www.shop263.com/i8-3/130.htm 安普罗列]
[http://www.shop263.com/i8-3/131.htm 安普罗林]
[http://www.shop263.com/i8-3/132.htm 氨基酸保护剂]
[http://www.shop263.com/i8-3/133.htm 氨基酸类衍生物]
[http://www.shop263.com/i8-3/134.htm 氨基酸衍生物]
[http://www.shop263.com/i8-3/135.htm 奥卡西平]
[http://www.shop263.com/i8-3/136.htm 奥拉米特]
[http://www.shop263.com/i8-3/137.htm 奥洛他定]
[http://www.shop263.com/i8-3/138.htm 奥美拉唑]
[http://www.shop263.com/i8-3/139.htm 白花油]
[http://www.shop263.com/i8-3/140.htm 白藜芦]
[http://www.shop263.com/i8-3/141.htm 百士欣]
[http://www.shop263.com/i8-3/142.htm 半合成抗生素]
[http://www.shop263.com/i8-3/143.htm 半合成原料药]
[http://www.shop263.com/i8-3/144.htm 棒酸]
[http://www.shop263.com/i8-3/145.htm 包装容器]
[http://www.shop263.com/i8-3/146.htm 胞苷]
[http://www.shop263.com/i8-3/147.htm 保健品]
[http://www.shop263.com/i8-3/148.htm 保肾康]
[http://www.shop263.com/i8-3/149.htm 倍灵高效广谱抗体外寄生虫药]
[http://www.shop263.com/i8-3/150.htm 倍他米松]
[http://www.shop263.com/i8-3/151.htm 苯磺阿曲库胺]
[http://www.shop263.com/i8-3/152.htm 苯甲酰甲酸甲酯]
[http://www.shop263.com/i8-3/153.htm 天门冬氨酸]
[http://www.shop263.com/i8-3/154.htm 苯乙酮甲酯]
[http://www.shop263.com/i8-3/155.htm 冬氨酸]
[http://www.shop263.com/i8-3/156.htm 吡嗪酰胺]
[http://www.shop263.com/i8-3/157.htm 扁桃酸]
[http://www.shop263.com/i8-3/158.htm 表雄酮]
[http://www.shop263.com/i8-3/159.htm 丙肝]
[http://www.shop263.com/i8-3/160.htm 丙基硫氧嘧啶]
[http://www.shop263.com/i8-3/161.htm 参茸蛤蚧保肾丸]
[http://www.shop263.com/i8-3/162.htm 藏成药]
[http://www.shop263.com/i8-3/163.htm 牙膏]
[http://www.shop263.com/i8-3/164.htm 茶碱]
[http://www.shop263.com/i8-3/165.htm 肠胃病治疗类]
[http://www.shop263.com/i8-3/166.htm 橙皮甙]
[http://www.shop263.com/i8-3/167.htm 雌二醇环戊丙酸酯]
[http://www.shop263.com/i8-3/168.htm 雌三醇]
[http://www.shop263.com/i8-3/169.htm 醋酸甲地孕酮]
[http://www.shop263.com/i8-3/170.htm 醋酸美伦孕酮]
[http://www.shop263.com/i8-3/171.htm 醋酸钠]
[http://www.shop263.com/i8-3/172.htm 醋酸坦勃龙]
[http://www.shop263.com/i8-3/173.htm 软胶囊]
[http://www.shop263.com/i8-3/174.htm 蛋白同化激素]
[http://www.shop263.com/i8-3/175.htm 迪克拉苏]
[http://www.shop263.com/i8-3/176.htm 地蒽粉]
[http://www.shop263.com/i8-3/177.htm 地克珠利]
[http://www.shop263.com/i8-3/178.htm 地舍平]
[http://www.shop263.com/i8-3/179.htm 碘伏消毒液]
[http://www.shop263.com/i8-3/180.htm 电池模具]
[http://www.shop263.com/i8-3/181.htm 淀粉糖]
[http://www.shop263.com/i8-3/182.htm 叠氮钠]
[http://www.shop263.com/i8-3/183.htm 丁洛地尔]
[http://www.shop263.com/i8-3/184.htm 注射液]
[http://www.shop263.com/i8-3/185.htm 东莨菪醇]
[http://www.shop263.com/i8-3/186.htm 杜球]
[http://www.shop263.com/i8-3/187.htm 对甲苯磺酸氟乙酯]
[http://www.shop263.com/i8-3/188.htm 对羟基苯甲醇]
[http://www.shop263.com/i8-3/189.htm 对异丙基苯甲酸]
[http://www.shop263.com/i8-3/190.htm 多非利特]
[http://www.shop263.com/i8-3/191.htm 多索茶碱片]
[http://www.shop263.com/i8-3/192.htm 多肽]
[http://www.shop263.com/i8-3/193.htm 多肽缩合剂]
[http://www.shop263.com/i8-3/194.htm 多西环素]
[http://www.shop263.com/i8-3/195.htm 鹅去氧胆酸胶囊]
[http://www.shop263.com/i8-3/196.htm 厄贝沙坦]
[http://www.shop263.com/i8-3/197.htm 恶霉灵水剂]
[http://www.shop263.com/i8-3/198.htm 吡啶醇酯]
[http://www.shop263.com/i8-3/199.htm 二氧化碳]
[http://www.shop263.com/i8-3/200.htm 法莫替丁注射液]
[http://www.shop263.com/i8-3/201.htm 泛昔洛韦]
[http://www.shop263.com/i8-3/202.htm 芳香球]
[http://www.shop263.com/i8-3/203.htm 放射性药物]
[http://www.shop263.com/i8-3/204.htm 专用消毒剂]
[http://www.shop263.com/i8-3/205.htm 非诺洛芬钙]
[http://www.shop263.com/i8-3/206.htm 酚磺乙胺]
[http://www.shop263.com/i8-3/207.htm 粉针剂]
[http://www.shop263.com/i8-3/208.htm 风疹病毒]
[http://www.shop263.com/i8-3/209.htm 呋喃胺盐]
[http://www.shop263.com/i8-3/210.htm 敷克酰基化]
[http://www.shop263.com/i8-3/211.htm 氟宝注射液]
[http://www.shop263.com/i8-3/212.htm 氟达拉滨磷酸盐]
[http://www.shop263.com/i8-3/213.htm 氟康唑]
[http://www.shop263.com/i8-3/214.htm 氟康唑片]
[http://www.shop263.com/i8-3/215.htm 氟罗沙星粗品]
[http://www.shop263.com/i8-3/216.htm 氟哌酸]
[http://www.shop263.com/i8-3/217.htm 氟西汀]
[http://www.shop263.com/i8-3/218.htm 氟孕酮]
[http://www.shop263.com/i8-3/219.htm 福美司坦]
[http://www.shop263.com/i8-3/220.htm 甘氨酸苄酯对甲苯磺酸盐]
[http://www.shop263.com/i8-3/221.htm 甘氨酸苄酯盐酸盐]
[http://www.shop263.com/i8-3/222.htm 甘草次酸]
[http://www.shop263.com/i8-3/223.htm 甘草酸单铵盐]
[http://www.shop263.com/i8-3/224.htm 甘草酸单钾盐]
[http://www.shop263.com/i8-3/225.htm 甘草酸二铵]
[http://www.shop263.com/i8-3/226.htm 甘草酸二铵盐]
[http://www.shop263.com/i8-3/227.htm 甘草酸二钾盐]
[http://www.shop263.com/i8-3/228.htm 甘草酸二钠盐]
[http://www.shop263.com/i8-3/229.htm 甘草酸三钾盐]
[http://www.shop263.com/i8-3/230.htm 甘草酸三钠盐]
[http://www.shop263.com/i8-3/231.htm 甘草酸锌]
[http://www.shop263.com/i8-3/232.htm 甘草甜味素]
[http://www.shop263.com/i8-3/233.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.