|
不知道还有没神人还在关注Brew,好像都冲向Android了!
问题是这样的:
我想实现BREW PCM 16khz[/COLOR]录音功能。现在的情况是能录(但只能录8khz),不知道采样率能否设置如何设置(想录16khz)?
代码:
//录音 PCM 文件 16khz
boolean CreateRecordMedia_PCMFile(CRecorderApp_s* pMe)
{
AEEMediaWaveSpec ws;
AEEMediaDataEx md;
MEMSET(&ws, (int)0, sizeof(ws));
ws.wSize= sizeof(ws);
ws.clsMedia= AEECLSID_MEDIAPCM;
ws.wChannels= 1;// 2
ws.dwSamplesPerSec= 16*1000;//采样率:16kHz【事实上该录的还是8khz,所以该处设置是无效的】[/COLOR]
ws.wBitsPerSample= 16;
ws.bUnsigned= FALSE;
//AEEMediaDataEx md;
md.pData= (void *)pMe->RecFileName;//录音文件路径
md.clsData = MMD_FILE_NAME;
md.dwSize = 0;
md.dwStructSize = sizeof(md);
md.dwCaps = 0;
md.bRaw = TRUE;
md.dwBufferSize = 0;
md.pSpec = &ws;
md.dwSpecSize = sizeof(ws);
ISHELL_CreateInstance(AEE_GetShell(), AEECLSID_MEDIAPCM, (void **)&(pMe->pRecMedia));
//IMEDIA_SetMediaParm(pMe->pRecMedia,MM_PARM_QCP_FORMAT,
// MM_AMR_FORMAT_FIXED_5_15_AMR, 0);
IMEDIA_SetMediaParm(pMe->pRecMedia,MM_PARM_AUDIO_PATH, MM_APATH_LOCAL, 0);
IMEDIA_SetTickTime(pMe->pRecMedia, 1000); // 1s
IMEDIA_SetMediaDataEx(pMe->pRecMedia, &md,1);
IMEDIA_RegisterNotify(pMe->pRecMedia, (PFNMEDIANOTIFY)RECMedia_HandleCallBack,(void *)pMe);
return TRUE;
}
我在在网上查到一个Brew PCM录音问题的一个帖子
http://bbs.189works.com/thread-44103-1-1.html
http://topic.csdn.net/u/20120130/14/3d4a507f-ee8b-4bb5-abda-8d8451a0cad7.html
里面结贴说法:
结贴:我使用的SDK版本是3.1.5
1. 录音模块应当不支持MMD_ISOURCE,如果哪位实现了,方便的话告知我一声,感谢先;
2. 录音模块支持MMD_BUFFER,模拟器上不行,真机上可以;可以通过TICK_UPDATE事件,及时获取BUFFER中的数据,但在我的真机上,录音没有完成前,BUFFER中的数据无法进行内存拷贝,只能写到文件中,很奇怪的问题;
3. 录音模块支持MMD_FILE_NAME,录制Windows PCM格式的录音,但采样率无法设置;
请有知晓的大虾帮忙一下!!
急啊!
谢谢啦[em08] |
|