RT,MFC中有现成的类么?如果没有,请各位帮帮忙给个源码。
另外问一个基础问题:WMA文件中也有ID3信息么?

解决方案 »

  1.   

    怎么我问的问题都没人答呀?好伤心我自己写了一个类,读ID3V1挺顺利的,不过无法得到MP3的播放时间,请问有人知道怎么获取MP3文件的播放时间么?
      

  2.   

    //把文件的最后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);
      

  3.   

    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;
      

  4.   

    谢谢两位,这些内容我都实现了,可以我还需要这首MP3的播放时间,到底是几分钟,这些信息到底放在文件里的哪个地方?一般的MP3播放软件都能获取这个数据呀
      

  5.   

    http://sourceforge.net/projects/massid3lib/
    这里有一个开源的项目,你自己下来看看!!!是用MFC做的,合乎你的要求