gpt4 book ai didi

c# - 将 nAudio 录音存储在变量而不是 c# 中的文件中

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:56 24 4
gpt4 key购买 nike

我正在使用 nAudio 录制声音字节,我想将这些直接存储到对象内的变量中,而不是将它们写入文件。

目前我记录的数据如下:

internal void start_recording(int device_number, string recording_file)
{
recording_file_name = recording_file;
mic_source_stream = new WaveIn();
mic_source_stream.DeviceNumber = device_number;
mic_source_stream.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(device_number).Channels);
mic_source_stream.DataAvailable += new EventHandler<WaveInEventArgs>(mic_source_stream_DataAvailable);
wave_writer = new WaveFileWriter(recording_file, mic_source_stream.WaveFormat);
mic_source_stream.StartRecording();
}
internal void mic_source_stream_DataAvailable(object sender, WaveInEventArgs e)
{
if (wave_writer == null) return;
wave_writer.Write(e.Buffer, 0, e.BytesRecorded);
wave_writer.Flush();
}

这将创建一个包含录音的 *.wav 文件。

相反,我想将音频数据保存在变量中,将所有相关录音保存到一个对象中,而不是文件系统中的多个 *.wav 文件,但 nAudio 似乎适合直接录制到文件并播放来自文件。

如果有一种简单的方法可以将音频录制到一个变量并从该变量播放它,或者我应该采用愚蠢但简单的方法录制到 *.wav 文件,将文件读取到字节数组,然后写入在加载播放之前将数组返回到文件?

记录会非常小,所以性能不是问题,只是写入磁盘只是为了在内存中将其读回两次,这很麻烦。

最佳答案

我建议只将录制的音频写入 MemoryStream。然后当你想回放时,使用 RawSourceWavestream 传入 MemoryStream 和你正在录制的 WaveFormat。不需要涉及 WAV文件格式。

关于c# - 将 nAudio 录音存储在变量而不是 c# 中的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32671598/

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