团队过绳子不许碰绳子:C读取MP3头部和尾部信息的代码
来源:百度文库 编辑:中财网 时间:2024/05/17 01:41:44
Mp3的文件头 长10字节.主要保存ID3、ID3版本和副版本信息,以及Flag和帧长的信息。
Mp3尾部 128字节大小的空间中包含了Header(尾部头,4字节),Title(歌曲名称,30字节),Artilst(艺术家30字节),Album(专辑,30字节),Year(发行年份,4字节),Comment(评论,30字节),Conre(?,1字节)
需要使用的函数 fseek() fread()
代码如下:
/*
Alias 2008-09-20
*/
#include
FILE *fp;
// Tag_header__Start
struct Tag_header{
char Header[3]; // It must be 'ID3'
char ver; // The version of ID3
char ReVer; // the subversion of ID3
char Flag;
char Size[4];
};
// Tag_header__End
// Tag_Trailer__Start
struct Tag_Trailer{
char Header[3];
char Title[30];
char Artist[30];
char Album[30];
char Year[4];
char Comment[30];
char Cenre[1];};
// Tag_GetTrailer__End
struct Tag_header Mp3Header;
struct Tag_Trailer Mp3Trailer;
main()
{
// 01.mp3是我测试时用的MP3的名称
fp = fopen("01.mp3","r+");
if(fp == NULL)
{
printf("No such file");
}
else
{
Tag_GetHeader();
Tag_GetTrailer();
}
printf("\n%s\n",Mp3Trailer.Title);
printf("%s\n",Mp3Trailer.Artist);
printf("%s\n",Mp3Trailer.Album);
printf("%s\n",Mp3Trailer.Year);
printf("%s\n",Mp3Trailer.Comment);
fclose(fp);
}
void Tag_GetTrailer()
{
// Get Header
fseek(fp,-128,SEEK_END);
fread(Mp3Trailer.Header,3,1,fp);
// Get Title
fseek(fp,-125,SEEK_END);
fread(Mp3Trailer.Title,30,1,fp);
// Get Artist
fseek(fp,-95,SEEK_END);
fread(Mp3Trailer.Artist,30,1,fp);
// Get Album
fseek(fp,-65,SEEK_END);
fread(Mp3Trailer.Album,30,1,fp);
// Get Year
fseek(fp,-35,SEEK_END);
fread(Mp3Trailer.Year,4,1,fp);
// Get Comment
fseek(fp,-31,SEEK_END);
fread(Mp3Trailer.Comment,30,1,fp);
// Get Cenre
fseek(fp,-1,SEEK_END);
fread(Mp3Trailer.Cenre,1,1,fp);
}
void Tag_GetHeader()
{
// Get ID3 Tag
fseek(fp,0,SEEK_SET);
fread(Mp3Header.Header,sizeof(Mp3Header.Header),1,fp);
// Get ID3 Version
fseek(fp,3,SEEK_CUR);
fread(Mp3Header.ver,sizeof(Mp3Header.ver),1,fp);
// Get ID3 Revision
fseek(fp,4,SEEK_CUR);
fread(Mp3Header.ReVer,sizeof(Mp3Header.ReVer),1,fp);
// Get ID3 Flag
fseek(fp,5,SEEK_CUR);
fread(Mp3Header.Flag,sizeof(Mp3Header.Flag),1,fp);
// Get ID3 Size
fseek(fp,6,SEEK_CUR);
fread(Mp3Header.Size,sizeof(Mp3Header.Size),1,fp);
}
如何区别磷脂分子的头部和尾部?
静态的html,怎么共用头部和尾部?
请问一下mp3的文件信息是怎么读取的?用c语言哦
静态网页:怎么用js共用头部和尾部?
如何去掉动网论坛的尾部版权信息
vb 将配置信息追加到exe尾部的问题
电脑突然读取信息变得很慢, 和CD ROM读取信息同样便的好慢
如何读取usbkey的信息?
asp.net(C#)中这样的代码怎样实现读取下一条记录?
Turboc2.0读取的*.C中的中文的信息显示乱码~该如何解决?
怎样读取和改写媒体文件信息?
怎么读取杀毒软件信息和升级时间?
蝗虫是用头部呼吸还是用尾部呼吸
MP3播放器和天气预报的代码
如何在vc中实现jpeg文件的显示和exif的读取?(代码)
如何读取组件的TypeLib信息
谁来举个互联网上读取信息的例子。。
怎样读取软盘里的信息?
怎么读取cookie里的信息
VC++中,如何读取主板和内存条的标识,编号等信息?
有什么软件可以识别和读取视频的详细文件信息?
宝马车尾部的标牌
文件的段落尾部?
为什么乌龟能从泥鳅的头部把它吞掉,而不能从他的尾部把它吞进去?