如何获取音频文件的ID3信息 RT,MFC中有现成的类么?如果没有,请各位帮帮忙给个源码。另外问一个基础问题:WMA文件中也有ID3信息么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎么我问的问题都没人答呀?好伤心我自己写了一个类,读ID3V1挺顺利的,不过无法得到MP3的播放时间,请问有人知道怎么获取MP3文件的播放时间么? //把文件的最后128字节信息读给pbuf数组 long seekPos = 128; file.Seek(-seekPos,CFile::end); BYTE pbuf[128]; memset(pbuf,0,sizeof(pbuf)); file.Read(pbuf,128); //获得tag,如果不是tag,那么就返回 if(!((pbuf[0] == 'T'|| pbuf[0] == 't') &&(pbuf[1] == 'A'|| pbuf[1] == 'a') &&(pbuf[2] == 'G'|| pbuf[0] == 'g'))) { CleanTAG(); file.Close(); return ; } mp3=(MP3INFO *) new BYTE[sizeof(MP3INFO)]; ZeroMemory(mp3,sizeof(MP3INFO)); memcpy(mp3->Identify,pbuf,3); //获得tag memcpy(mp3->Title,pbuf+3,30); //获得歌名 memcpy(mp3->Artist,pbuf+33,30); //获得作者 memcpy(mp3->Album,pbuf+63,30); //获得唱片名 memcpy(mp3->Year,pbuf+93,4); //获得年 memcpy(mp3->Comment,pbuf+97,28); //获得注释 memcpy(&mp3->reserved,pbuf+125,1); //获得保留 memcpy(&mp3->Track,pbuf+126,1); memcpy(&mp3->Genre,pbuf+127,1); typedef struct _MP3INFO //MP3信息的结构{ char Identify[3]; //TAG三个字母 //这里可以用来鉴别是不是文件信息内容 char Title[31]; //歌曲名,30个字节 char Artist[31]; //歌手名,30个字节 char Album[31]; //所属唱片,30个字节 char Year[5]; //年,4个字节 char Comment[29]; //注释,28个字节 unsigned char reserved; //保留位,1个字节126 unsigned char Track; //保留位,1个字节127 unsigned char Genre; //保留位,1个字节128} MP3INFO; 谢谢两位,这些内容我都实现了,可以我还需要这首MP3的播放时间,到底是几分钟,这些信息到底放在文件里的哪个地方?一般的MP3播放软件都能获取这个数据呀 http://sourceforge.net/projects/massid3lib/这里有一个开源的项目,你自己下来看看!!!是用MFC做的,合乎你的要求 INNER JOIN 联合查询的问题 CListCtrl如何在指定行插入空行? 连接点程序示例,找不到变量定义 有人写过VC解压缩的程序么? CTime在ATL中能用么? 紧急,高分酬谢.CPropertySheet+CDialog出现问题,内详 可以让EDIT BOX 也有 ::OnDraw(CDC* pDC)事件吗? 迷茫啊?求教~ ADO连数据库 记录集指针定义在哪里 连接指针定义在哪里? 一个关于ATL的问题。 有没有判断一个字符串是不是正确时间的函数?? CObArray序列化问题
long seekPos = 128;
file.Seek(-seekPos,CFile::end);
BYTE pbuf[128];
memset(pbuf,0,sizeof(pbuf));
file.Read(pbuf,128); //获得tag,如果不是tag,那么就返回
if(!((pbuf[0] == 'T'|| pbuf[0] == 't')
&&(pbuf[1] == 'A'|| pbuf[1] == 'a')
&&(pbuf[2] == 'G'|| pbuf[0] == 'g')))
{
CleanTAG();
file.Close();
return ;
} mp3=(MP3INFO *) new BYTE[sizeof(MP3INFO)];
ZeroMemory(mp3,sizeof(MP3INFO));
memcpy(mp3->Identify,pbuf,3); //获得tag
memcpy(mp3->Title,pbuf+3,30); //获得歌名
memcpy(mp3->Artist,pbuf+33,30); //获得作者
memcpy(mp3->Album,pbuf+63,30); //获得唱片名
memcpy(mp3->Year,pbuf+93,4); //获得年
memcpy(mp3->Comment,pbuf+97,28); //获得注释
memcpy(&mp3->reserved,pbuf+125,1); //获得保留
memcpy(&mp3->Track,pbuf+126,1);
memcpy(&mp3->Genre,pbuf+127,1);
{
char Identify[3]; //TAG三个字母
//这里可以用来鉴别是不是文件信息内容
char Title[31]; //歌曲名,30个字节
char Artist[31]; //歌手名,30个字节
char Album[31]; //所属唱片,30个字节
char Year[5]; //年,4个字节
char Comment[29]; //注释,28个字节
unsigned char reserved; //保留位,1个字节126
unsigned char Track; //保留位,1个字节127
unsigned char Genre; //保留位,1个字节128
} MP3INFO;
这里有一个开源的项目,你自己下来看看!!!是用MFC做的,合乎你的要求