mp3 id3v2 中图片数据的获取

本文介绍了一个简单的程序来读取MP3文件中的ID3v2标签信息,特别是如何查找和提取图片(APIC帧)数据。程序首先打开指定路径的MP3文件,检查是否存在ID3v2头部,然后遍历整个标签区域以寻找APIC帧。

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

FILE *fp;
BYTE cID3V2_head[10];
long ID3V2_len;
BYTE cID3V2Fra_head[10];
long lID3V2Fra_length;
BYTE *cID3V2Fra;
if ((fp=fopen("//My Documents//我的音乐//never say goodbye.mp3","rb"))==NULL)
{
MessageBox(NULL, _T("have no such file"), _T("notify"), MB_OK);
}
else
{
fread(cID3V2_head, 10, 1, fp);
if ((cID3V2_head[0]=='I'||cID3V2_head[0]=='i')
&&(cID3V2_head[1]=='D'||cID3V2_head[1]=='d')
&&(cID3V2_head[2]=='3'))
{
ID3V2_len = (cID3V2_head[6]&0x7f)<<21
| (cID3V2_head[7]&0x7f)<<14
| (cID3V2_head[8]&0x7f)<<7
| (cID3V2_head[9]&0x7f);
}

//get APIC
while((ftell(fp)+10)<=ID3V2_len)
{
memset(cID3V2Fra_head, 0, 10);
fread(cID3V2Fra_head, 10, 1, fp);

lID3V2Fra_length = (long)(cID3V2Fra_head[4]*0x100000000
+ cID3V2Fra_head[5]*0x10000
+ cID3V2Fra_head[6]*0x100
+ cID3V2Fra_head[7]);

if ((cID3V2Fra_head[0]=='A'||cID3V2Fra_head[0]=='a')
&&(cID3V2Fra_head[1]=='P'||cID3V2Fra_head[1]=='p')
&&(cID3V2Fra_head[2]=='I'||cID3V2Fra_head[2]=='i')
&&(cID3V2Fra_head[3]=='C'||cID3V2Fra_head[3]=='c'))
{

//分配成功
cID3V2Fra = (BYTE *)malloc(lID3V2Fra_length);
if (cID3V2Fra!=NULL)
{
fread(cID3V2Fra, lID3V2Fra_length, 1, fp);
}
break;
}
else
{
fseek(fp, lID3V2Fra_length, SEEK_CUR);
}
}
}
fclose(fp);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值