I am recording sound from a microphone in TMemoryStream. Playback from the stream is normal. However, when saving to a file, nothing is played. The data in the file are written.
Record Code:
WaveStream := TMemoryStream.Create; WaveStream.Position := 0; with WaveHdr do begin riff := 'RIFF'; len := 36; cWavFmt := 'WAVEfmt '; dwHdrLen := 16; wFormat := 1; wNumChannels := 2; dwSampleRate := 44100; wBlockAlign := 4; dwBytesPerSec := 176400; wBitsPerSample := 16; cData := 'data'; dwDataLen := 0; end; // Запись заголовка в поток WaveStream.Write(WaveHdr, SizeOf(WAVHDR)); //Собственно запись rchan := BASS_RecordStart(44100, 2, 0, @RecordingCallback, nil);
Callback function when writing standard:
function RecordingCallback(Handle: HRECORD; buffer: Pointer; length: DWord; user: Pointer): boolean; stdcall; begin Main.WaveStream.Write(buffer^, length); Result := True; end;
Save to file as follows:
WaveStream.SaveToFile('test.wav');
When using a TFileStream
result is the same.
What am I doing wrong?
dwDataLen := 0
- kot-da-vinci