1. ID3 tag version 2.3.0

1.1 文档情况

本文档是一个非正式的标准,取代了id3v2.2.0标准。非正式标准的发布使得实现者可以在正式标准设定之前就有了一个设定的标准。正式标准如果与本文档描述的不一致,将使用另一个版本或修订号。本文档中的内容可能会因说明而更改,但绝不会因添加或更改功能而更改。

本文件不受限制地分发。

1.2 摘要

本文档描述了ID3v2.3.0标准,它是ID3v2非正式标准(版本[:ID3v2 -00: 2.2.0])的更完善版本,从ID3标记系统发展而来。ID3v2提供了一种灵活的方法,可以在其内部存储关于音频文件的信息,以确定其来源和内容。这些信息可以是技术信息,如均衡曲线,也可以是相关元信息,如标题、表演者、版权等。

2. 文档惯例

在这些例子中,“”中的文本是一个文本字符串,与它在文件中出现的一模一样。前面带$的数字是十六进制数字,前面带%的数字是二进制数字。$xx用于表示内容未知的字节。%x用于表示内容未知的位。一个字节的最高有效位(MSB)称为“位7”,最低有效位(LSB)称为“位0”。

标签是本文档中描述的整个标签。帧是标记中的信息块。标签由header、帧和可选填充组成。一个字段是一条信息;一个值,一个字符串等等。数字字符串是仅由字符0-9组成的字符串。

3. ID3v2 overview

最大的两个设计目标是能够在不过多干扰旧软件的情况下实现ID3v2,并且ID3v2应该尽可能地灵活和可扩展。

第一个条件是满足一个简单的事实,即MPEG解码软件使用嵌入在音频流中的同步信号来“锁定”音频。因为ID3v2标记不包含有效的同步信号,所以没有软件会尝试播放该标记。如果,出于任何原因,巧合使同步信号出现在标签内,它将由第5节中描述的“非同步方案”处理。

第二个标准对ID3v2标签的设计产生了更明显的影响。它被构造为几个信息块(称为帧)的容器,遇到它们的软件不需要知道它们的格式。在每一帧的开始都有一个标识符来解释帧的格式和内容,以及一个允许软件跳过未知帧的大小描述符。

如果需要对ID3v2标记进行全面修订,则在ID3v2标头中有版本号和大小描述符。

本文档中描述的ID3标记主要针对MPEG-1/2 layer I、MPEG-1/2 layer II、 MPEG-1/2 layer III和MPEG-2.5编码的文件,但也可以用于其他类型的编码音频。

ID3v2中的位序是最高位优先(MSB)。多字节数字中的字节顺序是最高位优先(例如$12345678将被编码为$12 34 56 78)。

允许在所有最终帧之后(在ID3标签的末尾)包含填充,使所有帧的大小加在一起小于标签头部给出的大小。这种填充的一个可能的目的是允许在标记中添加一些额外的帧或扩大现有的帧,而不必重写整个文件。填充字节的值必须为$00。

3.1 ID3v2 header

ID3v2标签头应该是文件中的第一个信息,长度为10字节,如下所示:

ID3v2/file identifier   "ID3"
ID3v2 version           $03 00
ID3v2 flags             %abc00000
ID3v2 size              4 * %0xxxxxxx

标记的前三个字节总是“ID3”,表示这是一个ID3v2标记,后面直接跟着两个版本字节。ID3v2版本的第一个字节是它的主版本,而第二个字节是它的修订号。在本例中,这是ID3v2.3.0。所有修订都是向后兼容的,而主要版本则不是。如果支持ID3v2.2.0及以下版本的软件遇到版本3或更高版本,则应该直接忽略整个标记。版本和修订永远不会是$FF。

该版本后面是ID3v2 flags字段,其中目前只使用了三个标志。

  • a - Unsynchronisation (非同步)

    'ID3v2标志’中的第7位表示是否使用非同步(详情请参阅第5节);设置位表示使用情况。

  • b - Extended header (扩展头部)

    第二个比特(比特6)表示头之后是否有扩展头。扩展头在3.2节中描述。

  • c - Experimental indicator(实验指示器)

    第三位(第5位)应该用作“实验指示器”。当标签处于实验阶段时,应该始终设置此标志。

所有其他标志都应该被清除。如果设置了这些未定义的标志之一,则可能意味着该标记对于不知道标志功能的解析器来说是不可读的。

ID3v2标签大小用四个字节编码,其中每个字节的最高位(第7位)设置为0,总共为28位。零位将被忽略,因此257字节长的标记表示为$00 00 02 01。

ID3v2标签大小是不同步后的完整标签大小,包括填充,不包括标题,但不排除扩展标题(标签总大小 -减号_{减号}减号 10)。在大小描述中只使用了28位(代表最多256MB),以避免引入“错误同步信号”。

ID3v2标签可以用以下模式检测到:

$49 44 33 yy yy xx zz zz zz zzI  D  3

其中yy小于$FF, xx是flags字节,zz小于$80。

3.2 ID3v2 extended header

扩展头包含的信息对于正确解析标记信息并不重要,因此扩展头是可选的。

Extended header size   $xx xx xx xx
Extended Flags         $xx xx
Size of padding        $xx xx xx xx

其中’扩展头大小(Extended header size )',目前6或10字节,不包括自己。“填充的大小(Size of padding)”只是总的标签大小,不包括帧和报头,换句话说就是填充。扩展头被认为与头本身是分开的,因此受到不同步的影响。

扩展标志(Extended Flags)是描述标签进一步属性的辅助标志集。这些属性当前的定义如下:

%x0000000 00000000 // 二进制
  • x - CRC data present

    如果设置了这个标志,就会有四个字节的CRC-32数据被追加到扩展头中。CRC应该在扩展报头和填充之间的数据不同步之前计算,即帧和仅帧。

    Total frame CRC    $xx xx xx xx // 十六进制
    

3.3 ID3v2 frame overview

由于标签由标签头和带有一个或多个帧的标签体组成,所有的帧都由一个帧头后面跟着一个或多个包含实际信息的字段组成。帧头的布局:

Frame ID       $xx xx xx xx (four characters)
Size           $xx xx xx xx
Flags          $xx xx

由大写字母A-Z和0-9组成的帧ID。以“X”、“Y”和“Z”开头的标识符是供实验使用的,每个人都可以免费使用,而不需要在标记头中设置实验位。请记住,其他人可能使用了与您相同的标识符。所有其他标识符都被使用或保留以供将来使用。

帧ID后面跟着一个大小描述符,使得每帧的报头总大小为10字节。尺寸计算为不包括帧头的帧大小(帧大小 - 10)。

在帧报头中,大小描述符后面跟着两个标志字节。这些标志在3.3.1节中描述。

标签中帧的出现没有固定的顺序,尽管我们希望帧按照文件识别的重要性顺序排列。例如:UFID, TIT2, MCDI, TRCK…

一个标签必须至少包含一个帧。一个帧必须至少1字节大,不包括报头。

如果没有其他说明,则字符串表示为ISO-8859-1字符,范围为$20 - KaTeX parse error: Undefined control sequence: \< at position 19: …在帧描述中,这样的字符串表示为\̲<̲text string>,或者…FF FE或$FE FF)开头,以标识字节顺序。

所有数字字符串和url总是按照ISO-8859-1编码。如果使用ISO-8859-1编码,终止的字符串将以$00结束,如果使用unicode编码,则以$00 00结束。如果没有其他说明,则禁止换行符。在ISO-8859-1中,如果允许,新行仅用$0A表示。允许不同类型的文本编码的帧在帧大小后面有一个文本编码描述字节。如果使用ISO-8859-1,这个字节应该是$00,如果使用Unicode,它应该是$01。

依赖于编码的字符串被呈现为<text string according to encoding>,或者如果允许换行,被呈现为<full text string according to encoding>。任何以NULL结束的空Unicode字符串都可能有Unicode BOM后面跟着Unicode NULL ($FF FE 00 00或$FE FF 00 00)。

根据ISO-639-2, 3字节语言字段用于描述帧内容的语言。

所有的url都可能是相对的,例如。“picture.png”、“. . / doc.txt”。

如果一个帧比它应该的长度长,例如有比本文档中指定的更多的字段,这表明在ID3v2标准的后续版本中对该帧进行了添加。这反映在标签头部的修订号上。

3.3.1. Frame header flags

在帧头中,大小描述符后面跟着两个标志字节。所有未使用的标志必须清除。第一个字节用于“状态消息”,第二个字节用于编码。如果在第一个字节中设置了一个未知标志,在不清除该位的情况下,帧不能被更改。如果在第二个字节中设置了未知标志,则可能不可读。flags字段的定义如下。

%abc00000 %ijk00000
  • a - Tag alter preservation(标记更改保留)

    这个标志告诉软件,如果这个帧是未知的,并且标签以任何方式改变了,该如何处理这个帧。这适用于所有类型的更改,包括添加更多的填充和重新排序帧。

    0    Frame should be preserved(保留).
    1    Frame should be discarded(丢弃).
    
  • b - File alter preservation(文件更改保留)

    这个标志告诉软件,如果这个帧是未知的,并且文件(不包括标签)被改变了,该如何处理这个帧。当音频完全被其他音频数据取代时,这就不适用了。

    0    Frame should be preserved.
    1    Frame should be discarded.
    
  • c - Read only

    如果设置了这个标志,告诉软件这个帧的内容是只读的。更改内容可能会破坏某些东西,例如签名。如果改变了内容,不知道为什么帧被标记为只读,也不采取适当的补偿手段,例如重新计算签名,则应该清除该位。

  • i - Compression(压缩)

    这个标志表示帧是否被压缩。

    0    Frame is not compressed.
    1    Frame is compressed using [#ZLIB zlib] with 4 bytes for 'decompressed size' appended to the frame header.
    
  • j - Encryption(加密)

    这个标志表示帧是否加密。如果设置了一个字节,表明它是用哪种方法加密的,将被追加到帧头。参见4.26节。有关加密方法注册的详细信息。

    0   Frame is not encrypted.
    1    Frame is encrypted.
    
  • k - Grouping identity

    该标志表示该帧是否与其他帧属于一个组。如果设置了组标识符,则将字节添加到帧头。每个具有相同组标识符的帧都属于同一个组。

    0    Frame does not contain group information
    1    Frame contains group information
    

有些标志表示帧报头扩展了附加信息。该信息将被添加到帧头中,其顺序与表示添加的标志相同。也就是说,解压后的四个字节的大小将在加密方法字节之前。这些附加到帧头的内容,虽然不包含在帧报头大小中,但包含在’frame size’字段中,不受加密或压缩的影响。

3.4. Default flags

本文档中描述的帧的默认设置可以分为以下类。如果软件发现更合适,标志可以设置不同。

  1. 如果标签被改变就丢弃,如果文件被改变就丢弃。

    None.

  2. 如果标签被改变,则丢弃;如果文件被改变,则保留。

    None.

  3. 如果标签被改变,则保留;如果文件被改变,则丢弃。

    AENC, ETCO, EQUA, MLLT, POSS, SYLT, SYTC, RVAD, TENC, TLEN, TSIZ

  4. 如果标签被更改则保留,如果文件被更改则保留。

    剩下的帧

4. Declared ID3v2 frames

以下帧在本草案中声明。

4.20    AENC    [[#sec4.20|Audio encryption]]
4.15    APIC    [#sec4.15 Attached picture]
4.11    COMM    [#sec4.11 Comments]
4.25    COMR    [#sec4.25 Commercial frame]
4.26    ENCR    [#sec4.26 Encryption method registration]
4.13    EQUA    [#sec4.13 Equalization]
4.6     ETCO    [#sec4.6 Event timing codes]
4.16    GEOB    [#sec4.16 General encapsulated object]
4.27    GRID    [#sec4.27 Group identification registration]
4.4     IPLS    [#sec4.4 Involved people list]
4.21    LINK    [#sec4.21 Linked information]
4.5     MCDI    [#sec4.5 Music CD identifier]
4.7     MLLT    [#sec4.7 MPEG location lookup table]
4.24    OWNE    [#sec4.24 Ownership frame]
4.28    PRIV    [#sec4.28 Private frame]
4.17    PCNT    [#sec4.17 Play counter]
4.18    POPM    [#sec4.18 Popularimeter]
4.22    POSS    [#sec4.22 Position synchronisation frame]
4.19    RBUF    [#sec4.19 Recommended buffer size]
4.12    RVAD    [#sec4.12 Relative volume adjustment]
4.14    RVRB    [#sec4.14 Reverb]
4.10    SYLT    [#sec4.10 Synchronized lyric/text]
4.8     SYTC    [#sec4.8 Synchronized tempo codes]
4.2.1   TALB    [#TALB Album/Movie/Show title]
4.2.1   TBPM    [#TBPM BPM (beats per minute)]
4.2.1   TCOM    [#TCOM Composer]
4.2.1   TCON    [#TCON Content type]
4.2.1   TCOP    [#TCOP Copyright message]
4.2.1   TDAT    [#TDAT Date]
4.2.1   TDLY    [#TDLY Playlist delay]
4.2.1   TENC    [#TENC Encoded by]
4.2.1   TEXT    [#TEXT Lyricist/Text writer]
4.2.1   TFLT    [#TFLT File type]
4.2.1   TIME    [#TIME Time]
4.2.1   TIT1    [#TIT1 Content group description]
4.2.1   TIT2    [#TIT2 Title/songname/content description]
4.2.1   TIT3    [#TIT3 Subtitle/Description refinement]
4.2.1   TKEY    [#TKEY Initial key]
4.2.1   TLAN    [#TLAN Language(s)]
4.2.1   TLEN    [#TLEN Length]
4.2.1   TMED    [#TMED Media type]
4.2.1   TOAL    [#TOAL Original album/movie/show title]
4.2.1   TOFN    [#TOFN Original filename]
4.2.1   TOLY    [#TOLY Original lyricist(s)/text writer(s)]
4.2.1   TOPE    [#TOPE Original artist(s)/performer(s)]
4.2.1   TORY    [#TORY Original release year]
4.2.1   TOWN    [#TOWN File owner/licensee]
4.2.1   TPE1    [#TPE1 Lead performer(s)/Soloist(s)]
4.2.1   TPE2    [#TPE2 Band/orchestra/accompaniment]
4.2.1   TPE3    [#TPE3 Conductor/performer refinement]
4.2.1   TPE4    [#TPE4 Interpreted, remixed, or otherwise modified by]
4.2.1   TPOS    [#TPOS Part of a set]
4.2.1   TPUB    [#TPUB Publisher]
4.2.1   TRCK    [#TRCK Track number/Position in set]
4.2.1   TRDA    [#TRDA Recording dates]
4.2.1   TRSN    [#TRSN Internet radio station name]
4.2.1   TRSO    [#TRSO Internet radio station owner]
4.2.1   TSIZ    [#TSIZ Size]
4.2.1   TSRC    [#TSRC ISRC (international standard recording code)]
4.2.1   TSSE    [#TSEE Software/Hardware and settings used for encoding]
4.2.1   TYER    [#TYER Year]
4.2.2   TXXX    [#TXXX User defined text information frame]
4.1     UFID    [#sec4.1 Unique file identifier]
4.23    USER    [#sec4.23 Terms of use]
4.9     USLT    [#sec4.9 Unsychronized lyric/text transcription]
4.3.1   WCOM    [#WCOM Commercial information]
4.3.1   WCOP    [#WCOP Copyright/Legal information]
4.3.1   WOAF    [#WOAF Official audio file webpage]
4.3.1   WOAR    [#WOAR Official artist/performer webpage]
4.3.1   WOAS    [#WOAS Official audio source webpage]
4.3.1   WORS    [#WORS Official internet radio station homepage]
4.3.1   WPAY    [#WPAY Payment]
4.3.1   WPUB    [#WPUB Publishers official webpage]
4.3.2   WXXX    [#WXXX User defined URL link frame]

4.1. Unique file identifier(唯一文件标识符)

这个frame的目的是能够识别数据库中可能包含更多与内容相关的信息的音频文件。由于这种数据库的标准化超出了本文档的范围,因此所有frame都以一个以null-terminated的字符串开始,其中包含一个包含电子邮件地址的URL,或一个指向可以找到电子邮件地址的位置的链接,该位置属于负责该特定数据库实现的组织。有关数据库的问题应发送到指定的电子邮件地址。URL不应该用于实际的数据库查询。字符串“http://www.id3.org/dummy/ufid.html”应该用于测试。没有被告知的软件可以安全地删除这样的frames。'Owner identifier’必须非空(不仅仅是一个终止符)。‘Owner identifier’后面跟着实际的标识符,最长可达64字节。标签中可能有多个“UFID”帧,但只有一个具有相同的’Owner identifier’。

<Header for 'Unique file identifier', ID: "UFID">
Owner identifier    <text string> $00
Identifier    <up to 64 bytes binary data>

4.2. Text information frames

文本信息帧是最重要的帧,包含艺术家、专辑等信息。一个标签中可能只有一个文本信息帧。如果文本字符串后面跟着一个终止符($00(00)),所有以下信息都应该被忽略并且不被展示。所有文本帧标识符都以“T”开头。**只有文本帧标识符以“T”开头,“TXXX”帧除外。**所有文本信息帧的格式如下:

<Header for 'Text information frame', ID: "T000" - "TZZZ", excluding "TXXX" described in 4.2.2.>
Text encoding    $xx
Information    <text string according to encoding>

4.2.1. Text information frames - details

  • TALB

    ‘Album/Movie/Show title’ 帧 用于记录文件中(/声源)音频的标题。

  • TBPM

    “BPM”帧包含音频主要部分的每分钟节拍数。BPM是一个整数,用数字字符串表示。

  • TCOM

    'Composer(s)'框架用于表示作曲家的名字。它们用“/”字符分隔。Tom/Jerry/…

  • TCON

    “Content type”以前仅存储为一个字节的数值,现在是一个数值字符串。您可以像ID3v1.1那样使用一种或几种类型,或者,由于不可能使用准确和最新的类别来维护类别列表,所以您可以定义自己的类别。

    ID3v1类型的引用可以通过输入“(”作为第一个字节,后面跟着一个类型列表中的数字(附录a),并以“)”字符结束。这后面可选地跟着一个(refinement)细化,例如。“(21)”或“(4)欧洲迪斯科”。在同一个框架中可以有多个引用,例如:“(51)(39)”。如果(refinement)细化应该以“(”字符开始,它应该替换为“((”,例如:“(我能想出任何流派)”或“(55)((我认为……)”。以下新内容类型在ID3v2中定义,并以与数字内容类型相同的方式实现,例如:“(RX)”。

    RX    Remix
    CR    Cover
    
  • TCOP

    “Copyright message’”帧必须以年份和一个空格字符开头(5个字符),是为原始声音的版权所有者准备的,而不是音频文件本身。没有这个框架只意味着版权信息不可用或已被删除,不能被解释为声音属于公共领域。每次显示此字段时,该字段前必须加上“Copyright ©”。

  • TDAT

    'Date’帧是DDMM格式的数字字符串,包含记录的日期。这个字段总是四个字符长。

  • TDLY

    “Playlist delay”定义了播放列表中每首歌曲之间沉默的毫秒数。player 应该使用“ETC”帧,如果存在,跳过初始沉默和音频结束时的沉默,以匹配“Playlist delay”时间。时间表示为数字字符串。

  • TENC

    “Encoded by”帧包含对音频文件进行编码的个人或组织的名称。如果音频文件也受编码器的版权保护,则此字段可能包含版权信息。

  • TEXT

    “Lyricist(s) / Text writer(s)”(歌词和歌词作者)帧是针对录音中文字或歌词的作者。它们用“/”字符分隔。

  • TFLT

    'File type’帧表示该标记定义的音频类型。定义了以下类型和细化(refinements):

    MPG       MPEG Audio
    /1        MPEG 1/2 layer I
    /2        MPEG 1/2 layer II
    /3        MPEG 1/2 layer III
    /2.5      MPEG 2.5/AAC     Advanced audio compression
    VQF       Transform-domain Weighted Interleave Vector Quantization
    PCM       Pulse Code Modulated audio
    

    但也可以使用其他类型,但不是针对这些类型。它的使用方式类似于“TMED”框架中的预定义类型,但没有括号。如果此帧不存在,则假定音频类型为“MPG”。

  • TIME

    “Time”帧是HHMM格式的数字字符串,包含录制的时间。这个字段总是四个字符长。

  • TIT1

    如果声音属于更大的声音/音乐类别,则使用“Content group description” frame。例如,古典音乐通常被分类在不同的音乐部分(例如:古典音乐)。(《钢琴协奏曲》、《天气-飓风》)。

  • TIT2

    “Title/Songname/Content description” frame 是作品的实际名称(例如:“慢板”,“飓风唐娜”)。

  • TIT3

    “Subtitle/Description refine” frame 用于与内容标题直接相关的信息(例如: “Op. 16”或“温布利现场演出”)。

  • TKEY

    “Initial key”帧包含声音开始的音乐键。它表示为一个最大长度为3个字符的字符串。ground keys用“A”、“B”、“C”、“D”、“E”、“F”和“G”表示,halfkeys 用“B”和“#”表示。Minor 用“m”表示。例如:“Cbm”。Off key仅用“o”表示。

  • TLAN

    ‘Language(s)’ frame 应该包含在音频中说或唱的文本或歌词的语言。根据ISO-639-2,该语言由三个字符表示。如果文本中使用了一种以上的语言,那么它们的语言代码应该根据它们的用法来跟随。

  • TLEN

    “Length”帧包含音频文件的长度,以毫秒为单位,以数字字符串表示。

  • TMED

    ‘Media type’ 帧 描述声音来自哪个媒体。这可能是一个文本字符串,也可能是对下面列表中预定义媒体类型的引用。引用在“(”和“)”中进行,并可选地后跟文本细化(text refinement),例如:“(MC)有四个频道”。如果文本细化(text refinement)以“(”字符开始,则应以“((”替换,方法与“TCO”框架相同。预定义的细化附加在媒体类型之后,例如:(CD/A)或(VID/PAL/VHS)。

    DIG     Other digital media/A  Analog transfer from mediaANA     Other analog media/WAC Wax cylinder/8CA 8-track tape cassetteCD      CD/A Analog transfer from media/DD DDD/AD ADD/AA AADLD      Laserdisc/A Analog transfer from mediaTT      Turntable records/33 33.33 rpm/45 45 rpm/71 71.29 rpm/76 76.59 rpm/78 78.26 rpm/80 80 rpmMD      MiniDisc/A Analog transfer from mediaDAT     DAT/A Analog transfer from media/1 standard, 48 kHz/16 bits, linear/2 mode 2, 32 kHz/16 bits, linear/3 mode 3, 32 kHz/12 bits, nonlinear, low speed/4 mode 4, 32 kHz/12 bits, 4 channels/5 mode 5, 44.1 kHz/16 bits, linear/6 mode 6, 44.1 kHz/16 bits, 'wide track' playDCC     DCC/A Analog transfer from mediaDVD     DVD/A Analog transfer from mediaTV      Television/PAL PAL/NTSC NTSC/SECAM SECAMVID     Video/PAL PAL/NTSC NTSC/SECAM SECAM/VHS VHS/SVHS S-VHS/BETA BETAMAXRAD     Radio/FM FM/AM AM/LW LW/MW MWTEL     Telephone/I ISDNMC      MC (normal cassette)/4 4.75 cm/s (normal speed for a two sided cassette)/9 9.5 cm/s/I Type I cassette (ferric/normal)/II Type II cassette (chrome)/III Type III cassette (ferric chrome)/IV Type IV cassette (metal)REE     Reel(卷轴)/9 9.5 cm/s/19 19 cm/s/38 38 cm/s/76 76 cm/s/I Type I cassette (ferric/normal)/II Type II cassette (chrome)/III Type III cassette (ferric chrome)/IV Type IV cassette (metal)
    
  • TOAL

    ‘Original album/movie/show title’ frame 用于原始录音的标题(或声音来源),例如,如果文件中的音乐应该是之前发布的歌曲的翻唱。

  • TOFN

    ‘Original filename’ 帧 包含文件的更好的文件名,因为一些媒体不允许所需的文件名长度。文件名区分大小写,并包含其后缀。

  • TOLY

    ‘Original lyricist(s)/text writer(s)’ frame 用于原始录音的文本作者,例如,如果文件中的音乐应该是之前发布的歌曲的翻唱。文本写入器由“/”字符分隔。

  • TOPE

    ‘Original artist(s)/performer(s)’ frame 用于原始录音的表演者,例如,如果文件中的音乐应该是先前发布的歌曲的翻唱。表演者由“/”字符分隔。

  • TORY

    ‘Original release year’ frame 是指原始唱片发行的年份,例如,如果文件中的音乐应该是之前发行过的歌曲的翻唱。该字段的格式与“TYER” frame 相同。

  • TOWN

    ‘File owner/licensee’ frame 包含文件所有者或被许可方的名称及其内容。

  • TPE1

    ‘Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group’ (“首席艺术家/首席表演者/独奏家/表演团体”) frame 用于主要艺术家。它们用“/”字符分隔。

  • TPE2

    ‘Band/Orchestra/Accompaniment’ (“乐队/管弦乐队/伴奏”) frame 用于记录中关于表演者的附加信息。

  • TPE3

    ‘Conductor’ frame 用于表示乐队指挥的名称。

  • TPE4

    ‘Interpreted, remixed, or otherwise modified by’ frame (“诠释、再混音或以其他方式修改”)包含了更多关于调整版录制音乐背后的人的信息,以及对另一个现有作品的类似解释。

  • TPOS

    “Part of a set” 帧 是一个数字字符串,描述音频来自于集合的哪一部分。如果“TALB”帧中描述的源被划分为几个介质,例如双CD,则使用此帧。该值可以扩展为“/”字符和包含集合中部分总数的数字字符串。如。“1/2”。

  • TPUB

    “Publisher” frame 只包含标签或发布者的名称。

  • TRCK

    ‘Track number/Position in set’ frame 是一个数字字符串,包含音频文件在其原始录音中的排序数。这可以扩展为一个“/”字符和一个包含原始录音中曲目/元素总数的数字字符串。如。“4/9”。

  • TRDA

    ‘Recording dates’ frame 旨在作为“TYER”、“TDAT”和“TIME”框架的补充。如。“6月4日-7日,6月12日”与“TYER”框架相结合。

  • TRSN

    “‘Internet radio station name’ frame 包含音频流的互联网无线电台的名称。

  • TRSO

    ‘Internet radio station owner’ frame 包含音频流的互联网无线电台所有者的名称。

  • TSIZ

    “Size”帧包含以字节为单位的音频文件大小,不包括ID3v2标记,以数字字符串表示。

  • TSRC

    “ISRC”帧应包含国际标准记录码(ISRC)(12个字符)。

  • TSSE

    ‘Software/Hardware and settings used for encoding’ frame 包括使用的音频编码器及其在文件编码时的设置。硬件是指硬件编码器,而不是运行程序的计算机。

  • TYER

    'Year’帧是记录年份的数字字符串。这个帧总是四个字符长(直到10000年)。

4.2.2. User defined text information frame

此帧用于与其他“T”帧类似的关于音频文件的单字符串文本信息。帧体由字符串的描述组成,以终止字符串表示,后面跟着实际字符串。每个标签中可能有多个“TXXX”帧,但只有一个具有相同的描述。

<Header for 'User defined text information frame', ID: "TXXX">
Text encoding    $xx
Description    <text string according to encoding> $00 (00)
Value    <text string according to encoding>

4.3. URL link frames

有了这些框架,动态数据,如网页旅游信息,价格信息或普通新闻可以添加到标签。一个标签中只能有一个URL链接帧,除非在帧描述中另有说明。如果文本字符串后面跟着一个终止符($00(00)),所有以下信息都应该被忽略,不显示。所有URL链接帧标识符都以“W”开头。只有URL链接帧标识符以“W”开头。所有URL链接帧都有以下格式:

<Header for 'URL link frame', ID: "W000" - "WZZZ", excluding "WXXX" described in 4.3.2.>
URL <text string>

4.3.1. URL link frames - details

  • WCOM

    ‘Commercial information’ frame 是一个指向网页的URL,上面有专辑可以在哪里买到等信息。标签中可能有多个“WCOM”帧,但内容不同。

  • WCOP

    ‘Copyright/Legal information’ frame 是一个指向网页的URL,其中描述了文件的使用条款和所有权。

  • WOAF

    ‘Official audio file webpage’ frame 是一个指向文件特定网页的URL。

  • WOAR

    ‘Official artist/performer webpage’ frame 是指向艺术家官方网页的URL。如果音频包含多个表演者,但内容不相同,则标记中可能有多个“WOAR”帧。

  • WOAS

    The ‘Official audio source webpage’ frame 是指向音频文件来源的官方网页的URL,例如电影。

  • WORS

    ‘Official internet radio station homepage’ frame 包含一个指向互联网电台主页的URL。

  • WPAY

    “Payment” frame 是一个指向网页的URL,该网页将处理此文件的支付过程。

  • WPUB

    ‘Publishers official webpage’ frame 是一个指向出版商官方网页的URL。

4.3.2. User defined URL link frame

该帧用于与音频文件相关的URL链接,与其他“W”帧类似。帧主体由字符串的描述组成,以终止字符串表示,后面跟着实际的URL。URL总是用ISO-8859-1编码。每个标签中可能有多个“WXXX”帧,但只有一个具有相同的描述。

<Header for 'User defined URL link frame', ID: "WXXX">
Text encoding    $xx
Description    <text string according to encoding> $00 (00)
URL    <text string>

4.4. Involved people list

由于可能有很多人以各种方式为音频文件做出贡献,例如音乐家和技术人员,‘Text information frames’(“文本信息帧”)通常不足以列出参与项目的每个人。 ’Involved people list‘(“涉及人员名单”)是一个包含涉及人员姓名和涉及方式的框架。主体简单地包含一个带有介入人员的终止字符串,然后直接又是一个新的带有介入人员的终止字符串,依此类推。每个标签中可能只有一个“IPLS”帧。

<Header for 'Involved people list', ID: "IPLS">
Text encoding    $xx
People list strings    <text strings according to encoding>

4.5. Music CD identifier

此框架用于来自CD的音乐,以便能够在CDDB等数据库中识别CD。帧由CD目录的二进制转储TOC组成,它是一个4字节的头,然后CD上的 8 bytes/track 加上8字节的’lead out’,最大804字节。CD上每个音轨开始的偏移量应该用每个音轨四个字节的绝对CD帧地址来描述,而不是用绝对时间。这个frame需要一个当前有效的“TRCK”frame ,即使CD只有一个track。每个标记中可能只有一个“MCDI”帧。

<Header for 'Music CD identifier', ID: "MCDI">
CD TOC <binary data>

4.6. Event timing codes

这个框架允许与歌曲或声音中的关键事件同步。header是:

<Header for 'Event timing codes', ID: "ETCO">
Time stamp format    $xx

其中时间戳格式为:

$01 Absolute time, 32 bit sized, using MPEG frames as unit
$02 Absolute time, 32 bit sized, using milliseconds as unit

Abolute time 意味着每个戳包含从文件开始的时间。

下面是关键事件的列表,格式如下:

Type of event   $xx
Time stamp      $xx (xx ...)

‘Time stamp’ 如果直接在声音的开头或在前一个事件之后被设置为零。所有事件都应按时间顺序排列。事件类型如下:

$00     padding (has no meaning)
$01     end of initial silence
$02     intro start
$03     mainpart start
$04     outro start
$05     outro end
$06     verse start
$07     refrain start
$08     interlude start
$09     theme start
$0A     variation start
$0B     key change
$0C     time change
$0D     momentary unwanted noise (Snap, Crackle & Pop)
$0E     sustained noise
$0F     sustained noise end
$10     intro end
$11     mainpart end
$12     verse end
$13     refrain end
$14     theme end
$15-$DF reserved for future use
$E0-$EF not predefined sync 0-F
$F0-$FC reserved for future use
$FD     audio end (start of silence)
$FE     audio file ends
$FF     one more byte of events follows (all the following bytes with the value $FF have the same function)

不需要终止诸如“intro start”之类的启动事件。'Not predefined sync’s ($E0-EF)用于用户事件。你可能想要同步你的音乐到一些东西,如设置在舞台上的explosion,打开你的屏幕保护程序等。

每个标签中可能只有一个“ETCO”帧。

4.7. MPEG location lookup table

为了提高MPEG音频文件中跳跃的性能和准确性,在文件中不同位置具有时间码的帧可能很有用。ID3v2帧包含软件可以使用的引用去计算文件中的位置。在帧头之后是一个描述符,表示每次引用时’frame counter’应该增加多少。如果这个值是2,那么第一个参考点指向第二帧,第二个参考点指向第四帧,第三个参考点指向第六帧,以此类推。以类似的方式,“引用之间的字节”和“引用之间的毫秒”分别指出字节和毫秒。

每个引用由两部分组成;一定数量的比特,定义为“比特字节偏差”,描述了“引用之间的字节”与现实之间的差异,以及一定数量的比特,定义为“比特毫秒偏差”,描述了“引用之间的毫秒”与现实之间的差异。每个引用中的比特数,即。‘字节偏移位’+‘毫秒偏移位’,必须是4的倍数。每个标签中可能只有一个“MLLT”帧。

<Header for 'Location lookup table', ID: "MLLT">
MPEG frames between reference   $xx xx
Bytes between reference         $xx xx xx
Milliseconds between reference  $xx xx xx
Bits for bytes deviation        $xx
Bits for milliseconds dev.      $xx

然后,对于每一个引用包括以下数据;

Deviation in bytes         %xxx....
Deviation in milliseconds  %xxx....

4.8. Synchronised tempo codes

为了更准确地描述音乐作品的节奏,可以使用这个frame。在报头后面跟着一个字节,描述应该使用哪种时间戳格式。然后遵循一个或多个节奏代码。每个节拍码由一个节拍部分和一个拍子部分组成。节拍是用一个或两个字节描述的BPM。如果第一个字节的值为$FF,那么后面会有一个字节,它会被添加到第一个字节,给出2 - 510 BPM的范围,因为$00和$01是保留的。$00用于描述无节拍的时间段,这与无音乐的时间段不同。$01用来表示一个单拍,后面跟着一个无拍的周期。

节奏描述符后面跟着一个时间戳。每当音乐的节奏发生变化时,节奏描述符就会向player表明这一点。所有节奏描述符都应该按照时间顺序排列。在一个时间段内的第一个beat-stroke与节拍描述发生在同一时间。每个标签中可能只有一个“SYTC”帧。

<Header for 'Synchronised tempo codes', ID: "SYTC">
Time stamp format    $xx
Tempo data           <binary data>

其中时间戳格式为:

$01 Absolute time, 32 bit sized, using MPEG frames as unit
$02 Absolute time, 32 bit sized, using milliseconds as unit

Absolute time意味着每个戳包含从文件开始的时间。

4.9. Unsychronised lyrics/text transcription

该frame包含歌曲的歌词或其他声乐活动的文本转录。头包括编码描述符和内容描述符。正文由实际文本组成。“内容描述符”是一个终止字符串。如果没有输入描述符,“内容描述符”仅为$00(00)。文本中允许使用换行符。每个标签中可能有多个“Unsychronised lyrics/text transcription”帧,但只有一个具有相同的语言和内容描述符。

<Header for 'Unsynchronised lyrics/text transcription', ID: "USLT">
Text encoding       $xx
Language            $xx xx xx
Content descriptor  <text string according to encoding> $00 (00)
Lyrics/text         <full text string according to encoding>

4.10. Synchronised lyrics/text

这是另一种将所说或唱的歌词作为文本合并到音频文件中的方法,不过这次要与音频同步。它也可以用来描述发生在舞台上或与音频同步的屏幕上的事件。报头包含一个内容描述符,用终止文本字符串表示。如果没有输入描述符, ‘Content descriptor’ 仅为$00(00)。

<Header for 'Synchronised lyrics/text', ID: "SYLT">
Text encoding       $xx
Language            $xx xx xx
Time stamp format   $xx
Content type        $xx
Content descriptor  <text string according to encoding> $00 (00)

Encoding:

$00     ISO-8859-1 character set is used => $00 is sync identifier.
$01     Unicode character set is used => $00 00 is sync identifier.

Content type:

$00     is other
$01     is lyrics
$02     is text transcription
$03     is movement/part name (e.g. "Adagio")
$04     is events (e.g. "Don Quijote enters the stage")
$05     is chord (e.g. "Bb F Fsus")
$06     is trivia/'pop up' information

时间戳格式为:

$01 Absolute time, 32 bit sized, using MPEG frames as unit
$02 Absolute time, 32 bit sized, using milliseconds as unit

Absolute time意味着每个戳包含从文件开始的时间。

帧头后面的文本与 unsynchronised lyrics/text transcription 在一个主要方面有所不同。每个音节(或编码器认为方便的任何文本大小)都是一个以空结尾的字符串,后面跟着一个时间戳,表示它在声音文件中的位置。因此,每个同步都有以下结构:

Terminated text to be synced (typically a syllable)
Sync identifier (terminator to above string)    $00 (00)
Time stamp      $xx (xx ...)

“Time stamp”被设置为零,如果直接位于声音的开头,整个同步将被省略。所有时间戳都应该按时间顺序排序。同步可以被认为是后续字符串的验证器。

换行符($0A)允许出现在所有的“SYLT”帧中,并且应该在内容类型为$03 - $04的帧中的每个条目(名称,事件等)之后使用。

关于空格字符的一些注意事项:分隔单词的空格应该标记新单词的开始,因此出现在新单词的第一个音节之前。这对换行字符也是有效的。后面有逗号的音节不应该用同步音分开(音节和逗号都应该在同步音之前)。

一个例子:“USLT”段落

"Strangers in the night" $0A "Exchanging glances"

将“SYLT”编码为:

"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00
xx xx " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx
"ing" $00 xx xx "glan" $00 xx xx "ces" $00 xx xx

每个标记中可能有多个“SYLT”帧,但只有一个具有相同的语言和内容描述符。

4.11. Comments

此frame用于不适合任何其他框架的任何类型的全文信息。它由一个帧头组成,后面跟着编码、语言和内容描述符,并以实际的注释作为文本字符串结束。注释文本字符串中允许使用换行符。每个标记中可能有多个注释帧,但只有一个具有相同的语言和内容描述符。

<Header for 'Comment', ID: "COMM">
Text encoding           $xx
Language                $xx xx xx
Short content descrip.  <text string according to encoding> $00 (00)
The actual text         <full text string according to encoding>

4.12. Relative volume adjustment

这是一个比前面的function 更主观的function 。它允许用户在播放文件时说出他想在每个通道上增加/减少多少音量。目的是能够将所有文件对齐到一个参考卷,这样您就不必不断地更改卷。这个框架也可以用来平衡调整音频。如果音量峰值水平已知,则可以用’Peak volume right’ and ‘Peak volume left’ field进行描述。如果不知道峰值音量,这些字段可以保留为零,如果没有其他数据,则完全省略。每个标签中可能只有一个“RVAD”帧。

<Header for 'Relative volume adjustment', ID: "RVAD">
Increment/decrement             %00xxxxxx
Bits used for volume descr.     $xx
Relative volume change, right   $xx xx (xx ...)
Relative volume change, left    $xx xx (xx ...)
Peak volume right               $xx xx (xx ...)
Peak volume left                $xx xx (xx ...)

在自增/自减字段中,位0用于表示右通道,位1用于表示左通道。1是递增,0是递减。

对于MPEG 2 layer I、II、III和MPEG 2.5,‘bits used for volume description’ field 通常$10(16位)。这个值可能不是$00。卷总是用整个字节表示,当 ‘bits used for volume description’ 不是8的倍数时,在开头填充(最高位)。

这个数据锁后面可选地跟着left and right back channels的卷定义。如果这个信息被追加到帧,前两个通道将被视为前通道。在自增/自减字段中,位2用于表示右返回信道,位3用于表示the left back channel.

Relative volume change, right back      $xx xx (xx ...)
Relative volume change, left back       $xx xx (xx ...)
Peak volume right back                  $xx xx (xx ...)
Peak volume left back                   $xx xx (xx ...)

如果出现了中心通道调整,则在左后通道和右后通道之后追加以下内容到现有帧。中心信道由增加/减少字段中的第4位表示。

Relative volume change, center  $xx xx (xx ...)
Peak volume center              $xx xx (xx ...)

如果存在低音通道调整,则在中心通道之后追加以下内容到现有帧。低音信道由增加/减少字段中的第5位表示。

Relative volume change, bass    $xx xx (xx ...)
Peak volume bass                $xx xx (xx ...)

4.13. Equalisation(均衡)

这是另一个主观的、对齐的frame。它允许用户在音频文件中预先定义均衡曲线。每个标签中可能只有一个“EQUA”帧。

<Header of 'Equalisation', ID: "EQUA">
Adjustment bits $xx

‘adjustment bits’ field 定义了用于表示调整的位数。这通常是$10(16位)的MPEG 2 layer I, II和III和MPEG 2.5。这个值可能不是$00。

接下来是2个字节+('adjustment bits’四舍到最近的字节),为以下格式的每个均衡频带,给出0 - 32767Hz的频率范围:

Increment/decrement     %x (MSB of the Frequency)
Frequency               (lower 15 bits)
Adjustment              $xx (xx ...)

递增/递减位为1表示递增,0表示递减。均衡频带应根据频率逐渐有序。所有频率都不需要声明。读取软件中的均衡曲线应该在这一帧的值之间进行插值。三个相等的调整三个后续频率。一个频率在坐标系中应该只描述一次。

4.14. Reverb(混响)

这又是一个主观问题。你可以在这里调整不同种类的回声。左/右混响是ms中每次反弹之间的延迟。左/右混响是应该进行的反弹次数。$FF等于无限次的反弹。反馈是应返回给下一次回声反弹的音量量。$00是0% $FF是100%如果该值为$7F,则第一次反弹的成交量将减少50%,第二次反弹的成交量将减少50%,以此类推。从左到左表示从左弹跳发出的声音将在左侧扬声器中播放,而从左到右表示从左弹跳发出的声音将在右侧扬声器中播放。

“从左到右预混”是在应用任何混响之前,将左侧声音混合到右侧的量,其中$00 id为0%,$FF为100%。“从右向左预混”做同样的事情,但从右向左。将两个预混滤波器都设置为$FF将导致单声道输出(如果混响是对称应用的)。每个标签中可能只有一个“RVRB”帧。

<Header for 'Reverb', ID: "RVRB">
Reverb left (ms)                $xx xx
Reverb right (ms)               $xx xx
Reverb bounces, left            $xx
Reverb bounces, right           $xx
Reverb feedback, left to left   $xx
Reverb feedback, left to right  $xx
Reverb feedback, right to right $xx
Reverb feedback, right to left  $xx
Premix left to right            $xx
Premix right to left            $xx

4.15. Attached picture

此frame包含与音频文件直接相关的图片。图像格式是MIME类型和Image的子类型。在省略MIME媒体类型名称的情况下,将隐含“image/”。当需要互操作性时,应使用“image/png”或“image/jpeg”图片格式。描述是对图片的简短描述,表示为终止的文本字符串。描述的最大长度为64个字符,但可以为空。一个文件中可能有多张图片,每张图片都在各自的“APIC”框架中,但只有一张图片具有相同的内容描述符。可能只有一张图片类型分别声明为图片类型$01和$02。有可能通过使用“MIME类型”“——>”只放一个图像文件的链接,并有一个完整的URL而不是图片数据。但是,应谨慎使用链接文件,因为存在文件分离的风险。

<Header for 'Attached picture', ID: "APIC">
Text encoding   $xx
MIME type       <text string> $00
Picture type    $xx
Description     <text string according to encoding> $00 (00)
Picture data    <binary data>

图片类型:

$00     Other
$01     32x32 pixels 'file icon' (PNG only)
$02     Other file icon
$03     Cover (front)
$04     Cover (back)
$05     Leaflet page
$06     Media (e.g. lable side of CD)
$07     Lead artist/lead performer/soloist
$08     Artist/performer
$09     Conductor
$0A     Band/Orchestra
$0B     Composer
$0C     Lyricist/text writer
$0D     Recording Location
$0E     During recording
$0F     During performance
$10     Movie/video screen capture
$11     A bright coloured fish
$12     Illustration
$13     Band/artist logotype
$14     Publisher/Studio logotype

4.16. General encapsulated object

在这个frame中,任何类型的文件都可以被封装。在报头之后,‘Frame size’和’Encoding’紧跟’MIME type’,表示为用ISO-8859-1编码的终止字符串。文件名区分大小写,编码为’Encoding’。然后,内容描述为终止字符串,编码为’Encoding’。框架中的最后一个东西是实际的对象。前两个字符串可以省略,只留下它们的结尾。每个标记中可能有多个“GEOB”帧,但只有一个具有相同的内容描述符。

<Header for 'General encapsulated object', ID: "GEOB">
Text encoding           $xx
MIME type               <text string> $00
Filename                <text string according to encoding> $00 (00)
Content description     $00 (00)
Encapsulated object     <binary data>

4.17. Play counter

这只是一个文件被播放次数的计数器。该值在每次文件开始播放时加1。每个标签中可能只有一个“PCNT”帧。当计数器达到1时,在计数器前面插入一个字节,从而使计数器变大8位。计数器必须至少有32位。

<Header for 'Play counter', ID: "PCNT">
Counter         $xx xx xx xx (xx ...)

4.18. Popularimeter

这个帧的目的是指定音频文件有多好。很多有趣的应用都可以在这个frame中找到,比如播放列表,播放列表中有更多更好的音频文件,或者它可以用来分析一个人的品味,通过比较人们的配置文件来找到其他“好”文件。框架非常简单。它包含发送给用户的电子邮件地址、一个评级字节和一个四字节播放计数器,每次播放文件都会增加一个。电子邮件是一个终止的字符串。评分是1-255,其中1是最差的,255是最好的。0是未知数。如果不需要personal counter,可以省略。当计数器达到所有1时,在计数器前面插入一个字节,从而使计数器在与播放计数器(“PCNT”)相同的距离内大8位。每个标签中可能有多个“POPM”帧,但只有一个具有相同的电子邮件地址。

<Header for 'Popularimeter', ID: "POPM">
Email to user   <text string> $00
Rating          $xx
Counter         $xx xx xx xx (xx ...)

4.19. Recommended buffer size

有时,发送音频文件的服务器意识到传输或编码问题导致音频流中断。在这些情况下,服务器可以使用这个框架来推荐缓冲区的大小。如果’embedded info flag’为true(1),那么这表明’Buffer size’中描述的最大大小的ID3标记可能出现在audio stream中。在这种情况下,如果音频是MPEG编码的,则标记应该位于两个MPEG帧之间。如果下一个标签的位置已知,则可以使用’offset to next tag’。偏移量是从该帧所在标签的结束到下一帧标头的第一个字节。这个字段可以省略。通常不建议使用嵌入式标签,因为这可能会导致当前软件/硬件无法预测的行为。

对于像流式音频这样的应用程序,将标签嵌入到音频流中可能是一个好主意。如果客户端连接到像HTTP这样的单独连接,并且有可能以一个标记开始每一次传输,那么这个标记应该包括一个’recommended buffer size’ frame。如果客户端连接到流中的任意点,比如无线电或多播,那么每个标签中都应该包含’recommended buffer size’ frame。在初始/第一个标记之后拾取的每个标记都被认为是前一个标记的更新。例如,如果在第一个接收到的标签中有一个“TIT2”帧,在第二个标签中也有一个,那么第一个应该被第二个“替换”。

“Buffer size”应该保持最小值。每个标签中可能只有一个“RBUF”帧。

<Header for 'Recommended buffer size', ID: "RBUF">
Buffer size             $xx xx xx
Embedded info flag      %0000000x
Offset to next tag      $xx xx xx xx

4.20. Audio encryption(音频加密)

这个帧表示实际的音频流是否被加密,以及由谁加密。由于这种加密方案的标准化超出了本文档的范围,所有“AENC”帧都以一个包含电子邮件地址的URL结尾的字符串开始,或者是一个指向可以找到电子邮件地址的位置的链接,这属于负责此特定加密音频文件的组织。有关加密音频的问题应发送到指定的电子邮件地址。如果在“帧大小”后面直接找到$00,并且音频文件确实是加密的,那么整个文件可能被认为是无用的。

在’Owner identifier’之后,可以指定指向音频未加密部分的指针。‘Owner identifier’(“预览开始”)和’Preview length’(“预览长度”)是以帧为单位描述的。如果没有未加密的部分,这些字段应该保留为零。在’Preview length’() “预览长度”)字段之后,可选地跟随音频解密所需的数据锁。标签中可能有多个“AENC”帧,但只有一个具有相同的 ‘Owner identifier’.

<Header for 'Audio encryption', ID: "AENC">
Owner identifier        <text string> $00
Preview start           $xx xx
Preview length          $xx xx
Encryption info         <binary data>

4.21. Linked information

为了尽可能减少空间浪费,可以使用此帧链接来自另一个ID3v2标签的信息,这些ID3v2标签可能位于另一个音频文件中,也可能单独位于二进制文件中。建议仅在文件存储在CD-ROM或其他文件分离风险较低的情况下使用此方法。帧包含一个帧标识符(应该链接到这个标记中的帧),一个URL字段(给出帧所在文件的引用),以及额外的ID数据(如果需要的话)。应该从该链接指向的文件中找到的第一个标记检索数据。一个标签中可能有多个“LINK”帧,但只有一个具有相同的内容。链接帧被认为是标签的一部分,并具有与标签的物理部分相同的限制(即只允许一个“RVRB”帧,无论是否链接)。

<Header for 'Linked information', ID: "LINK">
Frame identifier        $xx xx xx
URL                     <text string> $00
ID and additional data  <text string(s)>

可以被链接且不需要额外数据的帧有“IPLS”、“MCID”、“ETCO”、“MLLT”、“SYTC”、“RVAD”、“EQUA”、“RVRB”、“RBUF”、文本信息帧和URL链接帧。

“TXXX”、“APIC”、“GEOB”和“AENC”帧可以作为附加ID数据与内容描述符链接。

“COMM”,“SYLT”和“USLT”帧可以与三个字节的语言描述符直接链接,后面跟着一个内容描述符作为额外的ID数据。

4.22. Position synchronisation frame

这个帧 向侦听器传递了他获得音频流到多远的信息;实际上,它声明了流中第一帧的时间偏移。框架布局为:

<Head for 'Position synchronisation', ID: "POSS">
Time stamp format   $xx
Position            $xx (xx ...)

其中时间戳格式为:

$01 Absolute time, 32 bit sized, using MPEG frames as unit
$02 Absolute time, 32 bit sized, using milliseconds as unit

并且位置是听者开始接收音频的位置,即下一帧的开始。如果该帧用于文件的开头,则该值始终为0。每个标签中可能只有一个“POSS”帧。

4.23. Terms of use frame

这个frame包含了对文件的使用条款和所有权的简要描述。关于法律条款的更详细资料可通过“WCOP”框架获得。文本中允许换行。一个标签中可能只有一个“USER”帧。

<Header for 'Terms of use frame', ID: "USER">
Text encoding   $xx
Language        $xx xx xx
The actual text <text string according to encoding>

4.24. Ownership frame

Ownership frame可以用作已完成交易的提醒,如果已签名,则用作证明。注意,“USER”和“TOWN”框架很适合与这个框架结合使用。帧开始,在帧ID,大小和编码字段之后,有一个’price paid '字段。此字段的前三个字符包含用于交易的货币,根据ISO-4217字母货币代码进行编码。与此连接的是实际支付的价格,作为使用“.”作为小数分隔符的数字字符串。接下来是一个8个字符的日期字符串(YYYYMMDD),后面是一个字符串,该字符串的最后一个字段是卖家的名字。一个标签中可能只有一个“OWNE”帧。

<Header for 'Ownership frame', ID: "OWNE">
Text encoding   $xx
Price payed     <text string> $00
Date of purch.  <text string>
Seller          <text string according to encoding>

4.25. Commercial frame

这个frame通过捆绑所有需要的信息,在同一个标签中支持多个相互竞争的报价。这使得这个框架相当复杂,但这是一个更简单的解决方案,如果一个人试图实现相同的结果与几个框架。帧开始于帧ID、大小和编码字段之后,是一个价格字符串字段。价格由一个三个字符的货币代码构成,该代码根据ISO-4217字母货币代码编码,后面跟着一个数字,其中“.”用作小数分隔符。在价格字符串中,几个价格可以连接在一起,用“/”字符分隔,但每种类型可能只有一种货币。

价格字符串后面是一个YYYYMMDD格式的8个字符的日期字符串,描述价格的有效期。在这之后是一个联系URL,用户可以通过它联系卖家,后面是一个字节的“received as”字段。它描述了音频是如何根据以下列表购买的:

$00     Other
$01     Standard CD album with other songs
$02     Compressed audio on CD
$03     File over the Internet
$04     Stream over the Internet
$05     As note sheets
$06     As note sheets in a book with other sheets
$07     Music on other media
$08     Non-musical merchandise

接下来是一个带有卖家名称的终止字符串,后面是一个带有简短产品描述的终止字符串。最后一件事是包含公司标志的能力。第一个是’Picture MIME type’ field,包含使用哪种图片格式的信息。在省略MIME媒体类型名称的情况下,将隐含“image/”。目前只允许“image/png”和“image/jpeg”。该格式字符串后面是二进制图片数据。如果要附加无图,最后两个字段可以省略。

<Header for 'Commercial frame', ID: "COMR">
Text encoding     $xx
Price string      <text string> $00
Valid until       <text string>
Contact URL       <text string> $00
Received as       $xx
Name of seller    <text string according to encoding> $00 (00)
Description       <text string according to encoding> $00 (00)
Picture MIME type <string> $00
Seller logo       <binary data>

4.26. Encryption method registration

要识别一个帧是用哪种方法加密的,加密方法必须注册在该帧的标记中。 ‘Owner identifier’ 是一个以空结尾的字符串,包含一个包含电子邮件地址的URL,或一个指向可以找到电子邮件地址的位置的链接,属于负责这种特定加密方法的组织。有关加密方法的问题应发送到指定的电子邮件地址。Method symbol’在整个标签中包含一个与该方法相关联的值。低于$80的值将被保留。Method symbol’后面可选地跟加密的特定数据。在一个标签中可能有几个“ENCR”帧,但只有一个包含相同的符号,只有一个包含相同的所有者标识符。该方法必须在标记中的某个地方使用。更多信息请参见第3.3.1节,标志j。

<Header for 'Encryption method registration', ID: "ENCR">
Owner identifier    <text string> $00
Method symbol       $xx
Encryption data     <binary data>

4.27. Group identification registration

这个帧可以对其他不相关的帧进行分组。当需要对某些帧进行签名时,可以使用这个选项。为了识别哪些帧属于一组帧,必须在该帧的标签中注册一个组标识符。‘Owner identifier’ 是一个以空结尾的字符串,包含一个包含电子邮件地址的URL,或一个指向可以找到电子邮件地址的位置的链接,属于负责分组的组织。有关分组的问题应发送到指定的电子邮件地址。 ‘Group symbol’ 包含一个值,在整个标签中将帧与该组关联起来。低于$80的值将被保留。 ‘Group symbol’ 后面可选择跟随一些组特定的数据,例如数字签名。一个标签中可能有几个“GRID”帧,但只有一个包含相同的符号,只有一个包含相同的所有者标识符。组符号必须在标记中的某处使用。更多信息请参见第3.3.1节,标志j。

<Header for 'Group ID registration', ID: "GRID">
Owner identifier     <text string> $00
Group symbol         $xx
Group dependent data <binary data>

4.28. Private frame

该frame用于包含来自软件生产者的信息,该软件生产者的程序使用这些信息,而不适合其他框架。帧由’Owner identifier’字符串和二进制数据组成。‘Owner identifier’ 是一个以空结束的字符串,包含一个URL,其中包含一个电子邮件地址,或一个链接到一个可以找到电子邮件地址的位置,该位置属于负责该帧的组织。有关框架的问题应发送到指定的电子邮件地址。标签可以包含多个“PRIV”帧,但内容不同。建议保持尽可能低的“PRIV”帧数。

<Header for 'Private frame', ID: "PRIV">
Owner identifier        <text string> $00
The private data        <binary data>

5. The unsynchronisation scheme

‘unsynchronisation scheme’ 的唯一目的是使ID3v2标签尽可能与现有软件兼容。如果文件只是要由新软件处理,那么’unsynchronisation scheme’ 标记是没有用的。不同步只能与MPEG 2 layer I, II和III以及MPEG 2.5文件进行。

每当在标记中发现一个 false synchronisation时,在第一个 false synchronisation字节之后插入一个零字节。ID3编码器应该修改的正确同步格式如下:

%11111111 111xxxxx

并应替换为:

%11111111 00000000 111xxxxx

这有一个副作用,所有$FF 00组合都必须被改变,所以它们不会受到解码过程的影响。因此,在不同步期间,所有的$FF 00组合必须被$FF 00 00组合替换。

为了指示不同步的使用,应该设置’ID3 flags’ 中的第一个位。只有当标签包含一个false synchronisation时,才应该设置这个位。只有当标签不包含任何false synchronisations时,这个bit应当被清除。

请记住,如果编码器使用了压缩方案,那么不同步方案应该在之后应用。当解码一个压缩的’unsynchronised’文件时,应该先解析’unsynchronisation scheme’,然后解压缩。

如果标签中的最后一个字节是$FF,并且需要消除标签中的错误同步,那么至少应该添加一个字节的填充。

6. Copyright

Copyright © Martin Nilsson 1998. All Rights Reserved.

本文件及其翻译可以复制并提供给他人,对本文件进行评论或以其他方式解释或协助其实施的衍生作品可以全部或部分地准备、复制、出版和分发,前提是在所有这些副本和衍生作品中都包含对本文件的引用。但是,本文件本身不能以任何方式修改,也不能作为原始文件重新发布。

上述授予的有限权限是永久的,不会被撤销。

本文件和此处包含的信息是在“现状”的基础上提供的,作者不承担任何明示或默示的保证,包括但不限于任何保证,即此处信息的使用不会侵犯任何权利或任何默示的适销性或适合于特定目的的保证。

7. References

[CDDB]光盘数据库http://www.cddb.com

[ID3v2] Martin Nilsson,“非正式标准ID3v2”。

[ISO-639-2] ISO/FDIS 639-2. 语言名称表示用代码。第2部分:Alpha-3代码。技术委员会/小组委员会:TC 37 / SC

[ISO-4217] ISO 4217:1995. 表示货币和基金的代码。技术委员会/小组委员会:TC 68

[ISO-8859-1] ISO/IEC DIS 8859-1. 8位单字节编码图形字符集,第1部分:拉丁字母1号。技术委员会/小组委员会:JTC 1 / SC 2

[ISRC] ISO 3901:1986国际标准记录代码。技术委员会/小组委员会:TC 46 / SC

[JFIF] JPEG文件交换格式,版本1.02,http://www.w3.org/Graphics/JPEG/jfif.txt

[MIME] Freed, N.和N. Borenstein,“多用途互联网邮件扩展(MIME)第一部分:互联网消息体的格式”,RFC 2045, 1996年11月。, ftp://ftp.isi.edu/in-notes/rfc2045.txt

[MPEG] ISO/IEC 11172-3:1993. 高达1.5 Mbit/s的数字存储媒体的动态图像和相关音频编码,第3部分:音频。JTC 1 / SC 29和ISO/IEC 13818-3:1995运动图像和相关音频信息的通用编码,第3部分:音频。技术委员会/小组委员会:JTC 1 / SC 29和ISO/IEC DIS 13818-3运动图像和相关音频信息的通用编码,第3部分:音频(ISO/IEC 13818-3:1995修订本)

[PNG]可移植的网络图形,1.0版,http://www.w3.org/TR/REC-png-multi.html

[UNICODE] ISO/IEC 10646-1:1993. 通用多八位编码字符集(UCS),第1部分:体系结构和基本多语言平面。技术委员会/小组委员会:JTC 1 / SC 2, http://www.unicode.org

[URL] T. Berners-Lee, L. Masinter & M. McCahill, “统一资源定位器(URL)”,rfc1738, 1994年12月。, ftp://ftp.isi.edu/in-notes/rfc1738.txt

[ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, “ZLIB压缩数据格式规范3.3版”,RFC 1950, 1996年5月。url: ftp://ftp.isi.edu/in-notes/rfc1950.txt

8. Appendix

8.1. Appendix A - Genre List from ID3v1

以下类型是在ID3v1中定义的:

  0. Blues1. Classic Rock2. Country3. Dance4. Disco5. Funk6. Grunge7. Hip-Hop8. Jazz9. Metal10. New Age11. Oldies12. Other13. Pop14. R&B15. Rap16. Reggae17. Rock18. Techno19. Industrial20. Alternative21. Ska22. Death Metal23. Pranks24. Soundtrack25. Euro-Techno26. Ambient27. Trip-Hop28. Vocal29. Jazz+Funk30. Fusion31. Trance32. Classical33. Instrumental34. Acid35. House36. Game37. Sound Clip38. Gospel39. Noise40. AlternRock41. Bass42. Soul43. Punk44. Space45. Meditative46. Instrumental Pop47. Instrumental Rock48. Ethnic49. Gothic50. Darkwave51. Techno-Industrial52. Electronic53. Pop-Folk54. Eurodance55. Dream56. Southern Rock57. Comedy58. Cult59. Gangsta60. Top 4061. Christian Rap62. Pop/Funk63. Jungle64. Native American65. Cabaret66. New Wave67. Psychadelic68. Rave69. Showtunes70. Trailer71. Lo-Fi72. Tribal73. Acid Punk74. Acid Jazz75. Polka76. Retro77. Musical78. Rock & Roll79. Hard Rock

以下类型是Winamp扩展:

 80. Folk81. Folk-Rock82. National Folk83. Swing84. Fast Fusion85. Bebob86. Latin87. Revival88. Celtic89. Bluegrass90. Avantgarde91. Gothic Rock92. Progressive Rock93. Psychedelic Rock94. Symphonic Rock95. Slow Rock96. Big Band97. Chorus98. Easy Listening99. Acoustic
100. Humour
101. Speech
102. Chanson
103. Opera
104. Chamber Music
105. Sonata
106. Symphony
107. Booty Bass
108. Primus
109. Porn Groove
110. Satire
111. Slow Jam
112. Club
113. Tango
114. Samba
115. Folklore
116. Ballad
117. Power Ballad
118. Rhythmic Soul
119. Freestyle
120. Duet
121. Punk Rock
122. Drum Solo
123. A capella
124. Euro-House
125. Dance Hall

9. Author’s Address

Written by

Martin Nilsson
Rydsven 246 C. 30
S-584 34 Linkoping
Sweden

Email: nilsson at id3.org

Edited by

Dirk Mahoney
57 Pechey Street
Chermside Q
Australia 4032

Email: dirk at id3.org

Johan Sundstrom
Alsttersgatan 5 A. 34
S-584 35 Linkoping
Sweden

Email: johan at id3.org

1. ID3 tag version 2.3.0(非正式文档中文翻译)相关推荐

  1. OAuth2.0官方文档中文翻译

    http://page.renren.com/699032478/note/708597990 (一)背景知识 OAuth 2.0很可能是下一代的"用户验证和授权"标准,目前在国内 ...

  2. Direct3D 9.0 SDK 文档(中文版)

    一直以来想将D3D的文档翻译一下,一来是为了学习,二来也是给其他朋友提供一下方便,但一直没有时间来做这件事情,今天偶尔在网上发现有人已经将这件事情做得足够好了,我将链接贴出来,希望想学习D3D的哥们, ...

  3. RSS2.0的文档资料

    RSS2.0的文档资料- - 什么是 RSS? RSS 是一种站点内容聚合的格式. 它的名字是Really Simple Syndication 的的简写. RSS是XML的一种.所有的RSS文档都遵 ...

  4. Zabbix4.0安装文档

    **Zabbix4.0安装文档 ** zabbix的官方要求: 1.客户端 安装脚本 #!/bin/bash ##zabbix-agent安装 ##zabbix-agent版本:4.0.2 ##添加y ...

  5. CUDA10.0官方文档的翻译与学习之编程接口

    目录 背景 用nvcc编译 编译工作流 二进制适配性 ptx适配性 应用适配性 C/C++适配性 64位适配性 cuda c运行时 初始化 设备内存 共享内存 页锁主机内存 可移植内存 写合并内存 映 ...

  6. 考研大数据爬取与分析工具3.0需求分析文档

    3.0开发文档 3.0需求分析文档 3.0运行结果 2.0及1.0 文章目录 1. 版本信息(徐可可) 2. 文档说明(王玮娟) 2.1. 文档简介 2.2. 文档读者 3. 产品简介(王玮娟) 3. ...

  7. 《天风文章》 V1.1.0设计文档

    一 简介 1.序 为了深入学习asp.net2.0,将理论同实践相结合,特以一新闻(文章)管理系统为例,来积累实际经验.在程序设计中,充分体现层次机构设计.面向对象思想,以及设计模式的思想. 系统定位 ...

  8. Lucene-2.0学习文档

    Lucene是apache组织的一个用java实现全文搜索引擎的开源项目. 其功能非常的强大,api也很简单.总得来说用Lucene来进行建立 和搜索和操作数据库是差不多的(有点像),Document ...

  9. 问答机器人2.0!文档问答产品科普

    在之前的文章里,我们测试过百度UNIT的图形化多轮对话编辑功能TaskFlow,今天我们将带大家体验UNIT和小i机器人最新的文档问答(document-based question answerin ...

最新文章

  1. anyproxy学习4-Linux(Centos)搭建anyproxy环境
  2. socket python 收 发 队列 线程_对于Python中socket.listen()与多线程结合的困惑?
  3. Linux mysql设置密码
  4. 基于TCP的在线聊天程序
  5. 【剑指offer】面试题56 - I:数组中数字出现的次数 I
  6. 深度学习笔记(18) 迁移学习
  7. partproble在RHEL 6下无法更新分区信息
  8. Arcgis server——arcgis server manager忘记密码
  9. 2016.7.15 NOIP2014模拟试题解题报告(又名:方克顺和他的正余弦朋友们(
  10. 协方差 方差 以及线性相关理解
  11. php 报HTTP Error 500
  12. Computer Hardware ID(CHID)及驱动推送
  13. Java实现json对比(递归)
  14. python给定dna等分成两个序列_Biopython序列
  15. 西子凌波回复集5(网友整理版)
  16. matlab生成手机app,matlab使用App designer生成可独立运行的app
  17. 使用高德开放平台显示指定的坐标点和线
  18. AE制作粉笔字特效教程 3分钟快速制作Vlog片头
  19. 代码覆盖率 ——语句覆盖 Statement Coverage、分支覆盖 Branch Coverage、 路径覆盖 Path Coverage的区别
  20. [work] 什么是对抗攻击

热门文章

  1. 电子邮件是如何跟踪您的?
  2. 后浪推前浪,一浪比一浪高;来自老鸟们的分享
  3. Spannable、Spanned、Editable用法及差别
  4. 13-Qt使用Ps制作软件启动图标和应用内图标的一般方法于步骤
  5. vue引入Echarts画折线图、平滑曲线图、转化数学公式详解
  6. Vue3通透教程【一】Vue3现状—必然趋势?
  7. 计算机主机参数,直观:无法理解计算机参数?小白的基本笔记本参数科学
  8. 斐波那契(Fibonacci)数列递归算法与非递归算法
  9. 【人人都是深度学习师】3行代码实现AI自动根据彩色图生成线稿图-图像分割
  10. python-回文数判断