VC获得mp3文件信息(目前仅ID3V1)
来源:互联网 发布:朗朗平板钢琴软件 编辑:程序博客网 时间:2024/05/16 12:15
#ifndef UCHAR
#define UCHAR unsigned char
#endif
typedef struct MP3ID3V1
{
UCHAR tag[3]; //"TAG"
UCHAR name[30];
UCHAR author[30];
UCHAR release[30];
UCHAR year[4];
UCHAR remark[30];
UCHAR type;
}CMP3ID3V1;
int GetMp3ID3V1Info(const char *fName, CMP3ID3V1 *mp3Info)
{
int ret = 0;
FILE *fh = fopen(fName, "rb");
if(!fh)
{
return -1;
}
ret = fseek(fh, -128, SEEK_END);
if(-1 == ret)
{
return -1;
}
ret = fread((void *)mp3Info, 128, 1, fh);
if(1 != ret)
{
return -1;
}
ret = fclose(fh);
if(0 != ret)
{
return -1;
}
return 0;
}
CString VCGetMp3ID3V1Info(CString fName)
{
char buf[128] = {0};
//wcstombs(buf, fName.GetBuffer(0), wcslen(fName.GetBuffer(0)));
CMP3ID3V1 mp3Info = {0};
//GetMp3ID3V1Info(buf, &mp3Info);
GetMp3ID3V1Info(fName, &mp3Info);
CString mp3InfoStr = _T(""), tempStr;
wchar_t infoWBuf[30] = {0};
UCHAR infoBuf[30] = {0};
memcpy(infoBuf, mp3Info.name, strlen((const char *)(mp3Info.name)));
//mbstowcs(infoWBuf, (const char *)infoBuf, strlen((const char *)infoBuf));
//tempStr.Format(_T("歌曲名: %s/r/n"), infoWBuf);
tempStr.Format(_T("歌曲名: %s/r/n"), infoBuf);
mp3InfoStr += tempStr;
memset(infoBuf, 0, sizeof(infoBuf));
memset(infoWBuf, 0, sizeof(infoWBuf));
memcpy(infoBuf, mp3Info.author, strlen((const char *)(mp3Info.author)));
//mbstowcs(infoWBuf, (const char *)infoBuf, strlen((const char *)infoBuf));
//tempStr.Format(_T("作者名: %s/r/n"), infoWBuf);
tempStr.Format(_T("作者名: %s/r/n"), infoBuf);
mp3InfoStr += tempStr;
memset(infoBuf, 0, sizeof(infoBuf));
memset(infoWBuf, 0, sizeof(infoWBuf));
memcpy(infoBuf, mp3Info.release, strlen((const char *)(mp3Info.release)));
//mbstowcs(infoWBuf, (const char *)infoBuf, strlen((const char *)infoBuf));
//tempStr.Format(_T("专辑名: %s/r/n"), infoWBuf);
tempStr.Format(_T("专辑名: %s/r/n"), infoBuf);
mp3InfoStr += tempStr;
memset(infoBuf, 0, sizeof(infoBuf));
memset(infoWBuf, 0, sizeof(infoWBuf));
return mp3InfoStr;
}
- VC获得mp3文件信息(目前仅ID3V1)
- 读 MP3 文件的头信息(ID3V1)
- 读取MP3文件的ID3v1信息
- MP3信息格式之ID3V1
- mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换
- MP3信息格式 ID3v1和ID3v2
- C语言解析mp3 ID3V1信息
- MP3文件的ID3V1信息与ID3V2信息结构的分析
- MP3 文件的ID3V1信息与ID3V2信息结构的分析
- MP3文件的ID3V1信息与ID3V2信息结构的分析
- MP3文件的ID3V1信息与ID3V2信息结构的分析
- 声音文件读取(未实现)--MP3 文件的ID3V1信息与ID3V2信息结构的分析
- [MP3学习]MP3标签信息之ID3v1,IDv2
- mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上)
- mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(下)
- 获取 MP3 中的 ID3V1、ID3V2 信息 (转)
- mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息
- VC获得目前网络状态
- Illuminated by blindness
- 百问
- 非默认拖动组件如何实现拖动?
- 给华育国际的学员分讲了一堂课:如何做技术
- VC中使用系统提供的线程池(Thread Pooling)
- VC获得mp3文件信息(目前仅ID3V1)
- 原来sscanf还可以和正则表达式结合起来
- (转)跟我一起写MakeFile
- 什么是ARX
- 2.2.1 核心接口
- 2.2.2 Callback接口
- (转)我奋斗了18年才能和你坐在一起喝咖啡
- python打印变量的标识符、类型和值
- 大学生应该脱口而出的100个精典英文句子