MP3中的ID3V2.3格式及标签

本文介绍了ID3V2.3版本的标签格式,包括标签头、标签帧的详细结构,以及标签帧的种类。ID3V2.3位于MP3文件的开头,允许存储更多元信息,如作曲、标题等。标签头包含版本、修订版和标志字节,标签帧则记录各种信息,如作者、标题等。处理ID3V2.3标签时需考虑不同的编码方式和帧内容的读取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ID3V2一共有四个版本,ID3V2.1/2.2/2.3/2.4,目前流行的播放软件一般只支持第三版即ID3V2.3,
由于ID3V1记录在文件的末尾处,ID3V2就只能记录在文件的首部了,也是因为这个原因,
对ID3V2的操作比ID3V1要慢,而且ID3V2的结构比ID3V1的结构复杂的多,但是ID3V2可以记录更多的信息,长度可变

ID3V2.3由一个标签头和若干个标签帧或者一个扩展标签头组成,至少要有一个标签帧,每一个标签帧记录一种信息,例如作曲、标题等

标签头格式:

char Header[3]; /*必须为“ID3”否则认为标签不存在*/
char Ver; /*版本号ID3V2.3 就记录3*/
char Revision; /*副版本号此版本记录为0*/

    /* 标志字节一般为0,仅使用了 前3个bit 定义如下(111000000B)
        第8位:表示是否使用Unsynchronisation
        第7位:表示是否有扩展头部,一般没有,所以一般也不设置
        第6位:表示是否为测试标签,99.99 % 的标签都不是测试标签,不设置
    */
unsigned char Flag;
    
    /*标签帧大小(不包括头的大小),这个大小比较怪,每字节仅底7位有效,4个底7位拼起来
    标签帧大小共四个字节,每个字节只使用低7位,最高位不使用恒为0,计算时将最高位去掉,得        到28bit的数据,计算公式如下:
        Size = (Size[0] & 0x7F) * 0x200000 + (Size[1] & 0x7F) * 0x4000 + (Size[2] & 0x7F) * 0x80 + (Size[3] & 0x7F)
    */
    char Size[4];  

实际找的MP3测试中没有发现扩展头的情况,ID3的官方网站上不去, 不知道扩展头在标签头的后面,还是在标签帧的后面。

标签帧的格式:

    /*标识帧,说明其内容,例如作者/标题等 TIT2=标题 TPE1=作者 TALB=专集*/
    char ID[4]; 
 
    /*帧内容的大小,不包括帧头,不得小于1 */
    unsigned char Size[4];

    /*标志帧,只定义了6 位 使用每个字节的高三位,其他位均为0(11100000B 11100000B)
        16 -- 标签保护标志,设置时认为此帧作废
        15 -- 文件保护标志,设置时认为此帧作废
        14 -- 只读标志,设置时认为此帧不能修改
        8 -- 压缩标志,设置时一个字节存放两个BCD 码表示数字
        7-- 加密标志
        6-- 组标志,设置时说明此帧和其他的某帧是一组
    */
    unsigned  char Flags[2];

标签帧的大小的计算方式:

int getContentSize() {
        int size = 0,b=0;
        b = (int)this->Size[0];    size = b ;
        b = (int)this->Size[1]; size = (size << 8) + b;
        b = (int)this->Size[2]; size = (size << 8) + b;
        b = (int)this->Size[3]; size = (size << 8) + b;
        return size;
    }

标签帧的种类

FrameID

Class Name

2

3

4

Audio Encryption

AENC

AudioEncryptionFrame

P

P

P

Attached Picture

APIC

AttachedPictureFrame

P

P

P

Audio seek point index

ASPI

P

Comment

COMM

TextWithLanguageFrame

P

P

P

Commercial Frame

COMR

CommercialFrame

P

P

Encryption Method Registraion

ENCR

DataWithSymbolFrame

P

P

Equalisation (2)

EQU2

P

Equalization

EQUA

Equalisation

P

P

Event Timing Code

ETCO

EventTimingCodeFrame

P

P

P

General Encapsulated Object

GEOB

GeneralFileFrame

P

P

P

Group Identification Registration

GRID

DataWithSymbolFrame

P

P

Involved People List

IPLS

TextFrame

P

P

Linked Information

LINK

LinkFrame

P

P

P

Music CD Identifier

MCDI

BinaryFrame

P

P

P

Mpeg Location Lookup Table

MLLT

P

P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值