mp3 id3 v2帧信息:标签头、帧头、帧标识。
注意:ID3 V2信息在MP3文件的头部,ID3 V1信息在MP3文件尾部。
标签头大小固定为10字节,宏定义如下:
#define ID3_V2_HEADER_SIZE (10)
音频 ID3 v2格式,结构体定义如下:
//固定10字节,标签头
struct id3_v2_hdl {
char header[3]; // ID3
char ver; // 版本号
char revision; // 副版本号
char flag; // 标志
u8 size[4]; // 所有标签帧的总大小,不包括标签头的10个字节
};
注意:header必须为ID3三个固定字符。
flag使用了高4bit。abcd0000。
a – 表示是否使用 Unsynchronisation(这个单词不知道是什么意思,字典里也没有找到,一般不设置);
b – 表示是否有扩展头部,一般没有(至少 Winamp 没有记录),所以一般也不设置
c – 表示是否为测试标签(99.99%的标签都不是测试用的啦,所以一般也不设置)
d–表示为了加快从文件末尾搜索时查找ID3v2标记的过程,可以在标记中添加页脚。需要将页脚添加到附加标签,即位于所有音频数据之后的标签。页脚是页眉的副本,但具有不同的标识符。
size表示所有标签帧的总大小。每个字节仅使用低7bit。
帧头:
struct id3_v2_frame {