我需要捕捉多条线的音频。据我所知,它应该用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();发布于 2013-10-30 10:06:55
如果可能的话,最简单的方法是将它们分别捕获到文件中,然后稍后进行混合。
如果必须动态混合,为每个BufferedWaveProvider创建一个WaveIn,并在它们可用时编写示例。然后,这些BufferedWaveProviders都可以添加到MixingSampleProvider中(假设它们都是相同的信道计数和采样率)。棘手之处在于决定何时从MixingSampleProvider中读取。理想情况下,您希望WaveIn的每个实例都在其BufferedWaveProvider中存储一个装满音频的缓冲区,然后通过混频器提取该数量的音频。当所有的MixingSampleProvider中都有一定数量的数据时,您就可以有一个计时器在BufferedWaveProviders中滴答作响并通过它。
https://stackoverflow.com/questions/19676932
复制相似问题