怎样用Tmediaplayer实现录音功能? 用命令mediaplayer1.startrecording;提示出错。是不是需要开辟一个空间保存录音文件?用savedialog又怎样将录音的文件保存起来?请指教!不胜感激!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我知道放savedialog,关键是笨的不知道怎么编程实现保存录音的文件,还是得问?能不能举个例子啊?拜托了^_^ 首先,你要建一个带Wave文件头的一个.wav文件,在这个文件头中指定wave的采样格式,如采样速率、采样位数等!然后用MediaPlayer打开,就可以开始录制了。关于Wave文件头格式你可以到Google去查! 请参考:http://www.csdn.net/develop/Read_Article.asp?Id=9778 干脆用第三方控件来实现录音功能,比如:mmtools,我有控件,也有录音的源程序,如果要的话,可以留下email。 你好,我非常想要这个源程序,请你务必告诉我,太感谢了我的email:[email protected]再次感谢 有控件的各位大虾能否给小弟一份啊?[email protected]最好是有个Demo程序阿不胜感激 struct TWavHeader{ long int rId; long int rLen; long int wId; long int fId; long int fLen; Word wFormatTag; Word nChannels; long int nSamplesPerSec; long int nAvgBytesPerSec; Word nBlockAlign ; Word wBitsPerSample; long int dId; long int wSampleLength;};//---------------------------------------------------------------------------void CreateWav(Word channels,Word resolution, long int rate,char* fn){ FILE *wf; TWavHeader wh; wh.rId = 0x46464952; //wh.rId := $46464952; wh.rLen = 36; wh.wId = 0x45564157; wh.fId = 0x20746d66; wh.fLen = 16; wh.wFormatTag = 1; wh.nChannels = channels; wh.nSamplesPerSec = rate; wh.nAvgBytesPerSec = channels * rate * (resolution / 8); wh.nBlockAlign = channels*(resolution / 8); wh.wBitsPerSample = resolution; wh.dId = 0x61746164; wh.wSampleLength = 0; wf=fopen(fn,"wb"); if(wf != NULL) { fwrite(&wh,1,sizeof(TWavHeader),wf); } else { ShowMessage("Can not Open File!"); } fclose(wf);end;}//---------------------------------------------------------------------------void __fastcall TForm1::btn1Click(TObject *Sender){ if( FileExists("Temp.wav") ) DeleteFile("Temp.wav"); CreateWav(1,16,8000,"Temp.wav"); mp1->DeviceType = dtAutoSelect; mp1->FileName = "Temp.wav"; mp1->Open(); mp1->StartRecording(); mtimes = 3; mmo_result->Lines->Clear(); mmo_result->Lines->Add("开始录音..."); lb_status->Width = 0; tmr1->Enabled = true;}//---------------------------------------------------------------------------void __fastcall TForm1::btn2Click(TObject *Sender){ Sleep(500); mp1->Stop(); mp1->Save(); mp1->Close(); 关键是你要先创建并打开一个wav文件,再录音,他就会录进你打开的那个文件里去了。 indy发送html带图片不能显示????? delphi程序运行时出现的问题 ※※※※※※※如何使鼠标不能移到窗体中的某个区域※※※※※※※※※※※※※※※※※※※※※ ADO与BDE连接数据库的不同在哪 delphi 怎么调用数据库的BCP 命令?? dx们,我想寻找可以转成DBF的控件,谢谢,不要试用的。 呜呜呜呜... VCLSkin有BUG! 俺用 Wininet 设置了SSL证书,为什么还是返回 False 数据增量 windows-xp正式版出了吗? 有点难度吧:想让麦克风通过声卡,实时地用音箱播放出来,实现卡拉OK的功能 关于CASE语句的问题!
能不能举个例子啊?拜托了^_^
http://www.csdn.net/develop/Read_Article.asp?Id=9778
我的email:[email protected]
再次感谢
[email protected]
最好是有个Demo程序阿
不胜感激
{
long int rId;
long int rLen;
long int wId;
long int fId;
long int fLen;
Word wFormatTag;
Word nChannels;
long int nSamplesPerSec;
long int nAvgBytesPerSec;
Word nBlockAlign ;
Word wBitsPerSample;
long int dId;
long int wSampleLength;
};//---------------------------------------------------------------------------
void CreateWav(Word channels,Word resolution, long int rate,char* fn)
{
FILE *wf;
TWavHeader wh; wh.rId = 0x46464952; //wh.rId := $46464952;
wh.rLen = 36;
wh.wId = 0x45564157;
wh.fId = 0x20746d66;
wh.fLen = 16;
wh.wFormatTag = 1;
wh.nChannels = channels;
wh.nSamplesPerSec = rate;
wh.nAvgBytesPerSec = channels * rate * (resolution / 8);
wh.nBlockAlign = channels*(resolution / 8);
wh.wBitsPerSample = resolution;
wh.dId = 0x61746164;
wh.wSampleLength = 0; wf=fopen(fn,"wb"); if(wf != NULL)
{
fwrite(&wh,1,sizeof(TWavHeader),wf);
}
else
{
ShowMessage("Can not Open File!");
}
fclose(wf);
end;
}//---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click(TObject *Sender)
{
if( FileExists("Temp.wav") ) DeleteFile("Temp.wav"); CreateWav(1,16,8000,"Temp.wav"); mp1->DeviceType = dtAutoSelect;
mp1->FileName = "Temp.wav";
mp1->Open();
mp1->StartRecording(); mtimes = 3;
mmo_result->Lines->Clear();
mmo_result->Lines->Add("开始录音...");
lb_status->Width = 0;
tmr1->Enabled = true;}//---------------------------------------------------------------------------
void __fastcall TForm1::btn2Click(TObject *Sender)
{
Sleep(500);
mp1->Stop();
mp1->Save();
mp1->Close();