【发布时间】:2015-09-19 18:06:17
【问题描述】:
我正在使用 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 文件,将文件读取到字节数组,然后写入在加载文件进行播放之前将数组返回到文件?
记录将非常小,因此性能不是问题,只是写入磁盘只是为了在内存中读取它两次,这很困难。
【问题讨论】: