从NAudio asioOut编写多个wav文件

时间:2012-12-29 01:02:26

标签: c# wav naudio asio

我正在尝试录制3-4个音频流并将它们写入单独的wav文件。我正在使用NAudio的asioOut来捕捉音频。起初我只是写了一个3或4通道的wav文件。所以我在这里搜索了一些问题并认为我创建了一个answer,但我仍然无法弄明白。现在我可以编写单独的wav文件,但每个文件中都有多个通道。

channel_1.wav -------->有第1和第2频道

channel_2.wav -------->有第1和第3频道

channel_3.wav -------->有第2和第3频道

我认为当我尝试解析 GetAsInterleavedSamples()时会出现问题。

这是我的asioOut_AudioAvailable()

    void asioOut_AudioAvailable(object sender, AsioAudioAvailableEventArgs e)
    {     

        float[] samples = new float[2 * 44100 * GetUserSpecifiedChannelCount()];

        samples = e.GetAsInterleavedSamples();

        int offset = 0;
        while (offset < samples.Length)
        {
            for (int n = 0; n < this.writers.Length; n++)
            {
                this.writers[n].WriteSamples(samples, offset, 2);
                offset += 2;
            }
        }

    }

我是新手,所以我只是在学习,任何帮助都会非常感激。

感谢。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你只想给每个编写器写一个样本,所以WriteSamples的第三个参数应该是1,而offset应该增加1.你可能已经复制了+ =图2是一个处理字节数组中16位音频的例子。