【发布时间】:2018-10-17 21:53:53
【问题描述】:
我正在使用 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 秒的音频保存到一个文件中。
现在,我的问题是我应该如何将音频存储在内存中,然后将其写入文件?
【问题讨论】:
-
如果不是,这个问题可能是因为 WAV 和 MP3 不同,一个是无损的,另一个是压缩的,如果我没记错的话,我在修补 mp3 时可能会有标题数据文件也是如此。可能是 1!=1 兼容性问题。
-
我的意思是写 wav 而不是 mp3。但这不是问题。
-
不,不幸的是,这不是我想要的。