现在的位置: 首页 > 综合 > 正文

使用音频引擎MITA处理音频文件tag的源代码

2012年07月26日 ⁄ 综合 ⁄ 共 2665字 ⁄ 字号 评论关闭

#include "../../include/mita.h" /**< @brief MITA SDK Header */
#ifdef _DEBUG
#pragma comment(lib, "../../library/mitaD.lib")
#else
#pragma comment(lib, "../../library/mita.lib")
#endif

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>

#pragma warning(push)
#pragma warning(disable:4996)

MITA_STATIC
MITA_INLINE
MITA_VOID
MITA_CheckError(MITA_VOID)
{
MITA_ERROR lastError = MITA_GetLastError();
if (lastError != MITA_ERROR_OK)
{
printf("ERROR: MITA Framework error with %u codes\n", lastError);
exit(lastError);
}
}

///////////////////////////////////////////////////////////////////////////////////
//Tag对象:
// Tag对象的创建主要来自于以下几个方面:
// 1. 解码器,解析音频的基本信息的时候,会自动创建Tag对象.
// 2. 编码器,用于压制音频文件的时候,需要手动创建Tag对象
// 3. 主动式API创建Tag对象,这样更加方便.
// 用户也可以根据MITA的接口自定义Tag对象,实现预期想要的功能.
//主要目标:
// 取代一些传统的标签库,因为大多的标签库接口定义标准不
// 一,使用很麻烦,文本编码错乱等等问题,所以MITA提供了全新的
// Tag系统,目前已经支持主流的id3v2, id3v1, ape, xiph等格式,
// 同样用户可以自主实现Tag接口,实现一些其他的格式.
//
void main(void)
{
MITA_HINSTANCE hInstance = MITA_Initialize(MITA_NULL);
MITA_HTAG hTag;
MITA_HSTREAM hStream;
MITA_SIZE i, n;
MITA_CHAR szName[64];
MITA_WCHAR szText[256];

printf(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n");
printf(";;Copyright(C) 杭州蜜柑科技有限公司 2008 - 2011. 保留所有权利。;;\n");
printf(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n");
printf(";;Use Tags Example ;;\n");
printf(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n");

MITA_Stream_Create(hInstance, MITA_STREAMTYPE_FILE, &hStream);
MITA_Stream_Open(hStream, (MITA_INTPTR)L"..\\Media\\stereo.ogg", (MITA_INTPTR)L"rb");

printf("Load ID3V2:\n");
hTag = MITA_Tag_CreateID3V2(hInstance);
MITA_Tag_Load(hTag, hStream);
n = MITA_Tag_GetItemNums(hTag);
for (i = 0; i < n; i++)
{
MITA_Tag_GetItemNameByIndex(hTag, i, szName, 64);
MITA_Tag_GetItemAsString(hTag, szName, szText, sizeof(szText));
printf("[%s]->[%s]\n", szName, MITA_Text_ToSystemS(szText, MITA_TCT_DEFAULT));
}
MITA_CloseHandle(hTag);

printf("Load ID3V1:\n");
hTag = MITA_Tag_CreateID3V1(hInstance);
MITA_Stream_Seek64(hStream, 0, SEEK_SET);
MITA_Tag_Load(hTag, hStream);
n = MITA_Tag_GetItemNums(hTag);
for (i = 0; i < n; i++)
{
MITA_Tag_GetItemNameByIndex(hTag, i, szName, 64);
MITA_Tag_GetItemAsString(hTag, szName, szText, sizeof(szText));
printf("[%s]->[%s]\n", szName, MITA_Text_ToSystemS(szText, MITA_TCT_DEFAULT));
}
MITA_CloseHandle(hTag);

MITA_Stream_Close(hStream);

MITA_Stream_Open(hStream, (MITA_INTPTR)L"..\\Media\\stereo.ogg", (MITA_INTPTR)L"rwb");
hTag = MITA_Tag_CreateID3V1(hInstance);
MITA_Tag_SetItemAsString(hTag, MITA_TAG_TITLE, L"MITA Tag");
MITA_Tag_SetItemAsString(hTag, MITA_TAG_ARTIST, L"蜜柑科技");
MITA_Tag_SetItemAsString(hTag, MITA_TAG_ALBUM, L"蜜柑多媒体");
MITA_Tag_Save(hTag, hStream);
MITA_CloseHandle(hTag);
MITA_Stream_Close(hStream);

MITA_CloseHandle(hStream);
MITA_CloseHandle(hInstance);
}

#pragma warning(pop)

抱歉!评论已关闭.