21.10.2023, 11:34
|
Прохожий
|
|
Регистрация: 10.05.2023
Сообщения: 3
Версия Delphi: Delphi XE 10
Репутация: 10
|
|
Так тоже не работает =(
Код:
var
WaveIn: HWAVEIN;
WaveHeader: PWAVEHDR;
Stream: TMemoryStream;
WaveFormat: TWaveFormatEx;
//start button
WaveIn := 0;
WaveHeader := nil;
Stream := TMemoryStream.Create;
// инициализация записи
WaveFormat.wFormatTag := WAVE_FORMAT_PCM;
WaveFormat.nChannels := 1;
WaveFormat.nSamplesPerSec := 44100;
WaveFormat.wBitsPerSample := 16;
WaveFormat.nBlockAlign := WaveFormat.nChannels * (WaveFormat.wBitsPerSample div 8);
WaveFormat.nAvgBytesPerSec := WaveFormat.nSamplesPerSec * WaveFormat.nBlockAlign;
WaveFormat.cbSize := 0;
waveInOpen(@WaveIn, WAVE_MAPPER, @WaveFormat, 0, 0, WAVE_FORMAT_DIRECT);
// выделение памяти под буфер
GetMem(WaveHeader, SizeOf(WAVEHDR));
WaveHeader^.lpData := AllocMem(8192);
WaveHeader^.dwBufferLength := 8192;
WaveHeader^.dwBytesRecorded := 0;
WaveHeader^.dwUser := 0;
WaveHeader^.dwFlags := 0;
WaveHeader^.dwLoops := 0;
WaveHeader^.lpNext := nil;
WaveHeader^.reserved := 0;
// запись звука
waveInPrepareHeader(WaveIn, WaveHeader, SizeOf(WAVEHDR));
waveInAddBuffer(WaveIn, WaveHeader, SizeOf(WAVEHDR));
waveInStart(WaveIn);
//stop button
waveInStop(WaveIn);
waveInUnprepareHeader(WaveIn, WaveHeader, SizeOf(WAVEHDR));
Stream.Write(WaveHeader^.lpData^, WaveHeader^.dwBytesRecorded);
Stream.SaveToFile('sound.wav');
FreeMem(WaveHeader^.lpData);
FreeMem(WaveHeader);
waveInClose(WaveIn);
Stream.Free;
|