求助,谁能给我一个录音程序

liergood 2007-10-25 05:56:21
用midiaplay也行,小第初学者谢谢大家了。就是能抓到所有电脑上的声音包括网络上传来的!不胜感谢
...全文
82 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolcalf 2007-10-27
  • 打赏
  • 举报
回复
录音函数
WAVEFORMATEX waveformat;
waveformat.wFormatTag=WAVE_FORMAT_PCM;
waveformat.nChannels=1;
waveformat.nSamplesPerSec=8000;
waveformat.nAvgBytesPerSec=16000;
waveformat.nBlockAlign=2;
waveformat.cbSize=0;
waveformat.wBitsPerSample=16; //指定录音格式
int res=waveInOpen(&m_hWaveIn,WAVE_MAPPER, &waveformat, (DWORD)m_hWnd,0L,CALLBACK_WINDOW); //打开录音设备
waveInPrepareHeader(m_hWaveIn,m_pWaveHdr,sizeof(WAVEHDR)); //准备内存块录音
waveInAddBuffer(m_hWaveIn,m_pWaveHdr,sizeof(WAVEHDR)); //增加内存块
waveInStart(m_hWaveIn);//开始录音
waveInStop(m_hWaveIn); //停止录音
waveInReset(m_hWaveIn); //清空内存块
waveInClose(m_hWaveIn); //关闭录音设备
laowang2 2007-10-27
  • 打赏
  • 举报
回复
mark
i_love_pc 2007-10-26
  • 打赏
  • 举报
回复
[转]老妖的代码:
 用MediaPlay录音   
//---------------------------------------------------------------------------
void __fastcall CreateWav(WORD wChannels, WORD wResolution, long lRate, String strFileName)
{
typedef struct _TWavHeader
{
long rId;
long rLen;
long wId;
long fId;
long fLen;
WORD wFormatTag;
WORD nChannels;
long nSamplesPerSec;
long nAvgBytesPerSec;
WORD nBlockAlign;
WORD wBitsPerSample;
long dId;
long wSampleLength;
}TWavHeader;

TWavHeader wh;
wh.rId = 0x46464952;
wh.rLen = 36;
wh.wId = 0x45564157;
wh.fId = 0x20746d66;
wh.fLen = 16;
wh.wFormatTag = 1;
wh.nChannels = wChannels;
wh.nSamplesPerSec = lRate;
wh.nAvgBytesPerSec = wChannels * lRate * (wResolution / 8);
wh.nBlockAlign = wChannels * (wResolution / 8);
wh.wBitsPerSample = wResolution;
wh.dId = 0x61746164;
wh.wSampleLength = 0;
int nHandle = FileCreate(strFileName);
FileSeek(nHandle, 0, 0);
FileWrite(nHandle, &wh, sizeof(wh));
FileClose(nHandle);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnStartClick(TObject *Sender)
{
// 开始录音
MediaPlayer1->DeviceType = dtAutoSelect;
CreateWav(2, 16, 44100, "C:\\Test.wav");
MediaPlayer1->FileName = "C:\\Test.wav";
MediaPlayer1->Open();
MediaPlayer1->StartRecording();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnEndClick(TObject *Sender)
{
// 结束录音
MediaPlayer1->Stop();
MediaPlayer1->Save();
MediaPlayer1->Close();
}
//---------------------------------------------------------------------------
Annie66 2007-10-26
  • 打赏
  • 举报
回复
可是这样,有时能录下来。有时不能,录音文件我用鼠标点一下就没了,不知道跑那去了。还有在对讲时它就报错。谁能告诉我着是为什么吗?

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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