Я решил вашу проблему с TMediaPlayer: для записи вы должны добавить команду «open» следующим образом:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
this->SaveDialog1->Execute();
this->MediaPlayer1->FileName = this->SaveDialog1->FileName;
this->MediaPlayer1->Open();
this->MediaPlayer1->StartRecording();
}
Предупреждение: TMediaPlayer не поддерживает создание звуковых файлов (как вы сказали),поэтому вы должны написать новый файл вручную перед использованием (weired).
Вы можете сделать это вручную (просто создайте новый .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();
}