![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Приветствую форумчани!
Возникла проблема =( Решил добавить в свой проект печаталку текста через микрофон. Но никак не получается записать звук и отсейвить это в wav(ик). Нужен примерчик именно для VCL =( для FMX много разных. Но весь огромный проект на VCL так что без вариантов. Я пробовал использовать HWaveIn и TMemoryStream/TFileStream. Поглядите может вы поймёте в чём дело: Код:
var
WaveIn: HWaveIn;
WaveFormat: TWaveFormatEx;
WaveHeader: TWaveHdr;
Buffer: array[0..1023] of Byte;
FileStream: TFileStream;
// старт записи
procedure TForm1.Button1Click(Sender: TObject);
begin
WaveFormat.wFormatTag := WAVE_FORMAT_PCM;
WaveFormat.nChannels := 1;
WaveFormat.nSamplesPerSec := 44100;
WaveFormat.nAvgBytesPerSec := WaveFormat.nSamplesPerSec * WaveFormat.nChannels * 2;
WaveFormat.nBlockAlign := 2;
WaveFormat.wBitsPerSample := 16;
WaveFormat.cbSize := 0;
WaveInOpen(@WaveIn, WAVE_MAPPER, @WaveFormat, 0, 0, 0);
WaveInStart(WaveIn);
WaveInPrepareHeader(WaveIn, @WaveHeader, SizeOf(WaveHeader));
WaveInAddBuffer(WaveIn, @WaveHeader, SizeOf(WaveHeader));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FileStream := TFileStream.Create('c:\wav\sound.wav', fmCreate);
try
WaveInUnprepareHeader(WaveIn, @WaveHeader, SizeOf(WaveHeader));
WaveInStop(WaveIn);
WaveInClose(WaveIn);
FileStream.WriteBuffer(WaveFormat, SizeOf(WaveFormat));
FileStream.WriteBuffer(WaveHeader.lpData^, WaveHeader.dwBufferLength);
ShowMessage('Звук успешно сохранен!');
finally
FileStream.Free;
end;
end;Кстати очень удивило что нет ни одного рабочего примера в интернете. Вроде ведь часто кому может потребоваться. TMediaPlayer тоже не сейвит у меня звуки почему-то =( так как везде примеры с MediaPlayer1.DeviceType := dtAudioIn; или MediaPlayer1.DeviceType := dMicrophone; а в моей дельфи 2020года есть только dtWaveAudio который почему то не хочет писать и сейвить вавики =( пОмОхИте чем сможите)) Спасибо |