我已经用 TMediaPlayer 解决了你的问题:要录制,你必须像这样添加“打开”命令:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
this->SaveDialog1->Execute();
this->MediaPlayer1->FileName = this->SaveDialog1->FileName;
this->MediaPlayer1->Open();
this->MediaPlayer1->StartRecording();
}
警告:TMediaPlayer 不支持创建声音文件(如您所说),因此您必须在使用之前手动编写一个新文件(奇怪)。
您可以手动完成(只需在某处创建一个新的 .wav)或使用此代码:(如果您不想在现有文件上录制,我建议使用此代码:)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
this->SaveDialog1->Execute();
this->MediaPlayer1->FileName = this->SaveDialog1->FileName;
TMemoryStream *AudioFile;
AudioFile = new TMemoryStream();
char buffer[43]= 0x52,0x49,0x46,0x46,0x04,0xc0,0x50,0x00,0x57,0x41,0x56,0x45,0x66,0x6D,0x74,0x20,
0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x44,0xAC,0x00,0x00,0x88,0x58,0x01,0x00,
0x02,0x00,0x10,0x00,0x64,0x61,0x74,0x61,0xE0,0xBF,0x50}; // .wav header example
AudioFile->Write(buffer,43);
char byte=0;
for (int i = 0; i < 49120; i++) // some free audiodata
{
AudioFile->Write(&byte,1);
}
AudioFile->SaveToFile(this->SaveDialog1->FileName);
AudioFile->Clear();
delete AudioFile;
AudioFile=NULL;
this->MediaPlayer1->Open();
this->MediaPlayer1->StartRecording();
}
// 停止按钮:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
this->MediaPlayer1->Stop();
}
//保存按钮:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
this->MediaPlayer1->Save();
this->MediaPlayer1->Close();
}