gpt4 book ai didi

c# - 将音频录制到内存流中,然后将其保存到文件中

转载 作者:行者123 更新时间:2023-12-02 23:04:08 27 4
gpt4 key购买 nike

我正在使用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秒的音频保存到文件中。

现在,我的问题是如何将音频存储在内存中,然后再将其写入文件?

最佳答案

试试这个:

using(var fileWriter = new WaveFileWriter("yourOutputFile", SampleProvider.WaveFormat)
{
ResourceWaveStream.CopyTo(fileWriter);
}

顺便说一句,“使用中”块在这里对您有好处,因为它将自动处理编写器,从而允许WaveFileWriter将 header 写入文件。

关于c# - 将音频录制到内存流中,然后将其保存到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50455395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com