Я использую NAudio для захвата 15 секунд аудио.Примерно так:
MemoryStream bufferedVoice = new MemoryStream();
voiceCapturer = new WasapiLoopbackCapture(OutputDevice);
voiceCapturer.DataAvailable += onVoiceOutputReceived;
voiceCapturer.StartRecording();
private void onVoiceOutputReceived(object sender, WaveInEventArgs e)
{
bufferedVoice.Write(e.Buffer, 0, e.BytesRecorded);
}
И через 15 секунд я хочу сохранить его в файл и выйти.Я попробовал это так, но это не сработало:
var ResourceWaveStream = new RawSourceWaveStream(bufferedVoice, voiceCapturer.WaveFormat);
var SampleProvider = new WaveToSampleProvider(ResourceWaveStream).ToWaveProvider16();
var fileWriter = new WaveFileWriter("output.mp3", SampleProvider.WaveFormat);
byte[] buf = new byte[8192];
while(SampleProvider.Read(buf, 0, buf.Length) > 0)
{
fileWriter.Write(buf, 0, buf.Length);
}
fileWriter.Dispose();
Как сохранить поток памяти в файл?
Уточнение: я хочу сохранить в памяти только x секунд звука,Поэтому, когда максимальный размер достигнут, часть самой старой части удаляется.Затем, если я нажимаю кнопку, я хочу сохранить 15 секунд звука в файл.
Теперь мой вопрос: как мне сохранить звук в памяти, а затем записать его в файл?