半个我

hengai的BLOG
随笔 - 17, 文章 - 4, 评论 - 134, 引用 - 2

导航

<2005年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

留言簿(4)

随笔分类

随笔档案

文章分类

文章档案

相册

VCKBASE

搜索

最新评论

阅读排行榜

评论排行榜

获取 MP3 中的 ID3V1、ID3V2 信息

近日公司分配给我任务,其中一个就是读取MP3文件的TAG信息。经过在网上搜索,自己总结出来比较完整的读取代码。

什么是ID3信息?这个我不做回答,请自己访问 www.id3.orgE文网站,E文不好这自己使用 www.google.com 搜索http://www.google.com/search?hl=zh-CN&q=%E4%BB%80%E4%B9%88%E6%98%AFID3&lr=lang_zh-CN

 

本来自己想使用 VC6 写一个示例工程的,但是发觉自己现在越来越懒了,不写了,仅仅把C代码贴出来,说明一下就算了。

 

1、  贴出来的是两个文件.h.c,注意:这并不是一个类,而是在C中使用的文件

2、  代码中读文件使用的是API函数,例如HFILE, ReadFile(..)等,这也是我太懒了,不愿意改过来 J

3、  代码很简单,我也不做详细说明了,自己慢慢看吧

 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///  .h 文件

/********************************************************************

  文件说明: 读取Audio文件中的信息。例如读入MP3中的ID3V1信息

  文件名称: audioInfo.h

  版本号  : 1.0.0

  开发日期:       2005-10-24   9:11

      : hengai

  修改纪录:

      2005-10-24 17:30: 扩充了 ID3V2 TAG定义。并且由原来的 #define 更改为 static LPCTSTR

      2005-10-24 18:10: 能够读取 MP3 中的所有ID3V2信息。

          更改了读取的结构体 MP3ID3V2INFO 定义以及用户使用这些信息的方式(在结构体定义中有说明)

*********************************************************************/

 

#define AUDIO_OUT_ERRMSG        //定义能够输出出错信息

//////////////////////////////////////////////////////////////////////////

//定义读取 MP3 ID3V1 所需要的结构体

//MP3 ID3V1 信息保存到MP3文件的最后128个字节中

typedef struct tag_MP3ID3V1INFO      //MP3信息的结构ShitMP3v1.07

{

  TCHAR   Identify[3];     //TAG三个字母。这里可以用来鉴别是不是文件信息内容

  TCHAR   Title[30];       //歌曲名,30个字节

  TCHAR   Artist[30];      //歌手名,30个字节

  TCHAR   Album[30];       //所属唱片,30个字节

  TCHAR   Year[4];         //年,4个字节

  TCHAR   Comment[28];     //注释,一般为28个字节(也可能30个字节,这时候占用下面的2个字节)

  UCHAR   CommentFlag;     //保留位1,注释长度标志位。如果是 0x00 表明注释长度为28,否则为30

  UCHAR   Track;           //保留位2,那个“第几首”,是个整数

  UCHAR   Genre;           //保留位3,歌曲风格,在0148之间。例如PopGeneral...

  TCHAR   pszGenre[30];    //保存了音乐的类型。

 //

 BOOL   bHasTag;         //这个 MP3 是否存在 ID3V1 TAG信息

} MP3ID3V1INFO, *PMP3ID3V1INFO;

//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////

//MP3 ID3V2 FrameID

enum ID3_FrameID{

  /* ???? */ ID3FID_NOFRAME = 0,       /**< No known frame */

  /* AENC */ ID3FID_AUDIOCRYPTO,       /**< Audio encryption */

  /* APIC */ ID3FID_PICTURE,           /**< Attached picture */

  /* ASPI */ ID3FID_AUDIOSEEKPOINT,    /**< Audio seek point index */

  /* COMM */ ID3FID_COMMENT,           /**< Comments */

  /* COMR */ ID3FID_COMMERCIAL,        /**< Commercial frame */

  /* ENCR */ ID3FID_CRYPTOREG,         /**< Encryption method registration */

  /* EQU2 */ ID3FID_EQUALIZATION2,     /**< Equalisation (2) */

  /* EQUA */ ID3FID_EQUALIZATION,      /**< Equalization */

  /* ETCO */ ID3FID_EVENTTIMING,       /**< Event timing codes */

  /* GEOB */ ID3FID_GENERALOBJECT,     /**< General encapsulated object */

  /* GRID */ ID3FID_GROUPINGREG,       /**< Group identification registration */

  /* IPLS */ ID3FID_INVOLVEDPEOPLE,    /**< Involved people list */

  /* LINK */ ID3FID_LINKEDINFO,        /**< Linked information */

  /* MCDI */ ID3FID_CDID,              /**< Music CD identifier */

  /* MLLT */ ID3FID_MPEGLOOKUP,        /**< MPEG location lookup table */

  /* OWNE */ ID3FID_OWNERSHIP,         /**< Ownership frame */

  /* PRIV */ ID3FID_PRIVATE,           /**< Private frame */

  /* PCNT */ ID3FID_PLAYCOUNTER,       /**< Play counter */

  /* POPM */ ID3FID_POPULARIMETER,     /**< Popularimeter */

  /* POSS */ ID3FID_POSITIONSYNC,      /**< Position synchronisation frame */

  /* RBUF */ ID3FID_BUFFERSIZE,        /**< Recommended buffer size */

  /* RVA2 */ ID3FID_VOLUMEADJ2,        /**< Relative volume adjustment (2) */

  /* RVAD */ ID3FID_VOLUMEADJ,         /**< Relative volume adjustment */

  /* RVRB */ ID3FID_REVERB,            /**< Reverb */

  /* SEEK */ ID3FID_SEEKFRAME,         /**< Seek frame */

  /* SIGN */ ID3FID_SIGNATURE,         /**< Signature frame */

  /* SYLT */ ID3FID_SYNCEDLYRICS,      /**< Synchronized lyric/text */

  /* SYTC */ ID3FID_SYNCEDTEMPO,       /**< Synchronized tempo codes */

  /* TALB */ ID3FID_ALBUM,             /**< Album/Movie/Show title */

  /* TBPM */ ID3FID_BPM,               /**< BPM (beats per minute) */

  /* TCOM */ ID3FID_COMPOSER,          /**< Composer */

  /* TCON */ ID3FID_CONTENTTYPE,       /**< Content type */

  /* TCOP */ ID3FID_COPYRIGHT,         /**< Copyright message */

  /* TDAT */ ID3FID_DATE,              /**< Date */

  /* TDEN */ ID3FID_ENCODINGTIME,      /**< Encoding time */

  /* TDLY */ ID3FID_PLAYLISTDELAY,     /**< Playlist delay */

  /* TDOR */ ID3FID_ORIGRELEASETIME,   /**< Original release time */

  /* TDRC */ ID3FID_RECORDINGTIME,     /**< Recording time */

  /* TDRL */ ID3FID_RELEASETIME,       /**< Release time */

  /* TDTG */ ID3FID_TAGGINGTIME,       /**< Tagging time */

  /* TIPL */ ID3FID_INVOLVEDPEOPLE2,   /**< Involved people list */

  /* TENC */ ID3FID_ENCODEDBY,         /**< Encoded by */

  /* TEXT */ ID3FID_LYRICIST,          /**< Lyricist/Text writer */

  /* TFLT */ ID3FID_FILETYPE,          /**< File type */

  /* TIME */ ID3FID_TIME,              /**< Time */

  /* TIT1 */ ID3FID_CONTENTGROUP,      /**< Content group description */

  /* TIT2 */ ID3FID_TITLE,             /**< Title/songname/content description */

  /* TIT3 */ ID3FID_SUBTITLE,          /**< Subtitle/Description refinement */

  /* TKEY */ ID3FID_INITIALKEY,        /**< Initial key */

  /* TLAN */ ID3FID_LANGUAGE,          /**< Language(s) */

  /* TLEN */ ID3FID_SONGLEN,           /**< Length */

  /* TMCL */ ID3FID_MUSICIANCREDITLIST,/**< Musician credits list */

  /* TMED */ ID3FID_MEDIATYPE,         /**< Media type */

  /* TMOO */ ID3FID_MOOD,              /**< Mood */

  /* TOAL */ ID3FID_ORIGALBUM,         /**< Original album/movie/show title */

  /* TOFN */ ID3FID_ORIGFILENAME,      /**< Original filename */

  /* TOLY */ ID3FID_ORIGLYRICIST,      /**< Original lyricist(s)/text writer(s) */

  /* TOPE */ ID3FID_ORIGARTIST,        /**< Original artist(s)/performer(s) */

  /* TORY */ ID3FID_ORIGYEAR,          /**< Original release year */

  /* TOWN */ ID3FID_FILEOWNER,         /**< File owner/licensee */

  /* TPE1 */ ID3FID_LEADARTIST,        /**< Lead performer(s)/Soloist(s) */

  /* TPE2 */ ID3FID_BAND,              /**< Band/orchestra/accompaniment */

  /* TPE3 */ ID3FID_CONDUCTOR,         /**< Conductor/performer refinement */

  /* TPE4 */ ID3FID_MIXARTIST,         /**< Interpreted, remixed, or otherwise modified by */

  /* TPOS */ ID3FID_PARTINSET,         /**< Part of a set */

  /* TPRO */ ID3FID_PRODUCEDNOTICE,    /**< Produced notice */

  /* TPUB */ ID3FID_PUBLISHER,         /**< Publisher */

  /* TRCK */ ID3FID_TRACKNUM