NAudio,录制多行

时间:2013-10-30 08:11:32

标签: naudio

我需要捕获多个Line In的音频。据我所知,它应该用WaveMixerStream32类完成,但无法弄清楚如何初始化multiptle WaveIn作为WaveStream将它们传递给WaveMixerStream的AddInputStream方法。 我能够用代码录制单行的音频:

waveIn = new NAudio.Wave.WaveIn();
waveIn.WaveFormat = new NAudio.Wave.WaveFormat(44100, 1);
waveIn.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>(audioDataAvailable);
waveWriter = new NAudio.Wave.WaveFileWriter(wavFileName, waveIn.WaveFormat);
waveIn.StartRecording();

1 个答案:

答案 0 :(得分:2)

如果可能,最简单的方法是将它们全部分别捕获到文件中,然后再混合。

如果必须动态混合,请为每个WaveIn创建一个BufferedWaveProvider,并在样本可用时写入样本。然后可以将这些BufferedWaveProvide都添加到MixingSampleProvider中(假设它们都是相同的通道数和采样率)。棘手的一点是决定何时从MixingSampleProvider读取。理想情况下,您希望WaveIn的每个实例在其BufferedWaveProvider中放置一个充满音频的缓冲区,然后通过混音器提取该数量的音频。只要所有BufferedWaveProviders中都有一定数量的数据,你就可以有一个计时器来勾选并拉过MixingSampleProvider。