我一直在尝试通过解析 mp3 文件并检索每个帧的大小来检索 ID3V2 标记帧。到目前为止,我没有运气。
我已有效地将内存分配给缓冲区以帮助读取文件,并且已成功打印出标题版本,但在检索标题和帧大小时遇到了困难。对于标题帧大小,我得到 1347687723,尽管在十六进制编辑器中查看文件我看到 05 2B 19。
我的代码的两个片段:
typedef struct{ //typedef structure used to read tag information
char tagid[3]; //0-2 "ID3"
unsigned char tagversion; //3 $04
unsigned char tagsubversion;//4 00
unsigned char flags; //5-6 %abc0000
uint32_t size; //7-10 4 * %0xxxxxxx
}ID3TAG;
if(buff){
fseek(filename,0,SEEK_SET);
fread(&Tag, 1, sizeof(Tag),filename);
if(memcmp(Tag.tagid,"ID3", 3) == 0)
{
printf("ID3V2.%02x.%02x.%02x \nHeader Size:%lu\n",Tag.tagversion,
Tag.tagsubversion, Tag.flags ,Tag.size);
}
}