导航:首页 > 源码编译 > mp3歌曲重新编译

mp3歌曲重新编译

发布时间:2023-07-17 13:50:54

‘壹’ c语言程序设计MP3或MP4文件基本信息的解析

找了个MP3看了下,comment是29个字节。
可参考 http://www.chineselinuxuniversity.net/articles/27374.shtml

拿VC的C语言写了下:
头文件:
#include <stdio.h>

// TODO: reference additional headers your program requires here

#define MP3_ID3_LENGTH 10
typedef struct tag_ID3_INFO
{

} ID3_INFO;

#define IDENTIFY_LEN 3
#define TITLE_LEN 30
#define ARTIST_LEN 30
#define ALBUM_LEN 30
#define YEAR_LEN 4
#define COMMENT_LEN 30
#define GENRE_LEN 1

// IDENTIFY_LEN + TITLE_LEN +...
#define MP3_INFO_LENGTH 128

typedef struct tag_MP3_INFO
{
char Identify[IDENTIFY_LEN + 1]; //TAG三个字母
//这里可以用来鉴别是不是文件信息内容
char Title[TITLE_LEN + 1]; //歌曲名,30个字节
char Artist[ARTIST_LEN + 1]; //歌手名,30个字节
char Album[ARTIST_LEN + 1]; //所属唱片,30个字节
char Year[YEAR_LEN + 1]; //年,4个字节
char Comment[COMMENT_LEN + 1]; //注释,28个字节
char Genre[GENRE_LEN + 1]; //类型 ,1个字节
} MP3_INFO;

C文件:
#include <string.h>

#define MP3_OK 1
#define MP3_ERROR 1

FILE *OpenMp3File(char *pFileName);
int ReadMP3Info(FILE *pFile, MP3_INFO *pstInfo);
int OutputMP3Info(MP3_INFO *pstMp3Info);

int main(int argc, char* argv[])
{
FILE *pFile = NULL;
MP3_INFO stMp3Info = {0};
char *pfname = "E:\\Project\\MP3\\test.MP3";

pFile = OpenMp3File(pfname);
if (NULL == pFile)
{
return MP3_ERROR;
}

ReadMP3Info(pFile, &stMp3Info);

printf("\r\nMP3 file: %s", pfname);
OutputMP3Info(&stMp3Info);

printf("Hello World!\n");
return MP3_OK;
}

FILE *OpenMp3File(char *pFileName)
{
FILE *pFile = NULL;
pFile = fopen(pFileName,"rb");
if (NULL==pFile)
{
printf("open read file error!!");
return NULL;
}

return pFile;
}

int ReadMP3Info(FILE *pFile, MP3_INFO *pstInfo)
{
int len = 0;
if ((NULL == pFile) || (NULL == pstInfo))
{
return MP3_ERROR;
}

fseek(pFile, 0, SEEK_END);
len = ftell(pFile);
if (len <= (MP3_INFO_LENGTH + MP3_ID3_LENGTH))
{
return MP3_ERROR;
}

memset(pstInfo, 0, sizeof(MP3_INFO));

fseek(pFile, -MP3_INFO_LENGTH, SEEK_END);
len = fread((char *)(pstInfo->Identify), 1, IDENTIFY_LEN, pFile);
len += fread((char *)(pstInfo->Title), 1, TITLE_LEN, pFile);
len += fread((char *)(pstInfo->Artist), 1, ARTIST_LEN, pFile);
len += fread((char *)(pstInfo->Album), 1, ALBUM_LEN, pFile);
len += fread((char *)(pstInfo->Year), 1, YEAR_LEN, pFile);
len += fread((char *)(pstInfo->Comment), 1, COMMENT_LEN, pFile);
len += fread((char *)(pstInfo->Genre), 1, GENRE_LEN, pFile);
if (MP3_INFO_LENGTH != len)
{
return MP3_ERROR;
}

return MP3_OK;
}

int OutputMP3Info(MP3_INFO *pstMp3Info)
{
printf("\r\nTag : %s", pstMp3Info->Identify);
printf("\r\nTitle : %s", pstMp3Info->Title);
printf("\r\nArtist : %s", pstMp3Info->Artist);
printf("\r\nAlbum : %s", pstMp3Info->Album);
printf("\r\nYear : %s", pstMp3Info->Year);
printf("\r\nComment: %s", pstMp3Info->Comment);

return MP3_OK;
}

测试:
MP3 file: E:\Project\MP3\test.MP3
Tag : TAG
Title : TrackTitle
Artist : ArtistName
Album : AlbumTitle
Year : 2012
Comment: This is a comment

‘贰’ 请问易语言怎么将MP3文件放到自己要编译的程序中。

点击菜单栏上:插入--->资源--->声音资源——导入声音然后写入代码:播放音乐 (#音频资源, 真) ’只支持WAV和MID 格式

阅读全文

与mp3歌曲重新编译相关的资料

热点内容
高性能web站点pdf 浏览:980
scratch飞机大战编程全程教学 浏览:2
java网络编程详解 浏览:694
oppo手机如果应用加密了如何解开 浏览:898
q退出命令 浏览:758
java变量单例 浏览:482
javametainf 浏览:967
sys编译软件 浏览:640
学数控编程准备 浏览:156
可爱的程序员西米没了 浏览:295
叶罗丽冰公主解压本 浏览:981
车用空调压缩机品牌 浏览:830
在回收站中可以恢复几个文件夹 浏览:916
phpget转义 浏览:322
我的世界宝可梦服务器叫什么名字 浏览:748
新闻编译难吗 浏览:582
ia架构服务器是什么意思 浏览:220
linux查看局域网 浏览:77
金蝶启动命令 浏览:480
安卓如何执行shell命令 浏览:947