菜鸟问题:如何录制声音到缓冲区中?

liuxiaowei 2001-10-10 01:23:22
VC++
...全文
73 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxiaowei 2001-10-11
  • 打赏
  • 举报
回复
请问lhuchong(令狐虫)大虾
缓冲区大小有限制吗?
Jneu 2001-10-10
  • 打赏
  • 举报
回复
UP
lhuchong 2001-10-10
  • 打赏
  • 举报
回复
int Record(const char* buffer,int* bufferlen)
{
MMRESULT mmResult;

char soundbuffer[SIZE];

/* write */
LPWAVEHDR header = (WAVEHDR*)malloc(sizeof(WAVEHDR));



memset(header, 0, sizeof(WAVEHDR));

header->lpData = (char *)soundbuffer;
header->dwBufferLength = SIZE;
header->dwFlags = WHDR_DONE;
header->dwUser = (DWORD)0;

mmResult = waveInPrepareHeader(hWaveIn, header, sizeof(WAVEHDR));

mmResult = waveInAddBuffer( hWaveIn, header, sizeof(WAVEHDR));
if ( mmResult != MMSYSERR_NOERROR){
puts("waveInAddBuffer Error");
return -1;
}
//MMSYSERR_INVALHANDLE
mmResult = waveInStart( hWaveIn);
if(mmResult != MMSYSERR_NOERROR)
{
puts("waveInStart Error");
return -1;
}

Sleep(1000);

mmResult = waveInStop( hWaveIn);
if(mmResult != MMSYSERR_NOERROR)
{
puts("waveInStop Error");
return -1;
}



memcpy( (void*)buffer ,header->lpData, header->dwBytesRecorded);

*bufferlen = header->dwBytesRecorded;

if( waveInUnprepareHeader( hWaveIn, header, sizeof(WAVEHDR)) != MMSYSERR_NOERROR)

{
puts("waveInUnprepareHeader Error");
return -1;
}

return 0;
}

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧