2

我正在尝试录制 3-4 个音频流并将它们写入单独的 wav 文件。我正在使用 NAudio 的 asioOut 来捕获音频。起初我只是在写一个 3 或 4 通道的 wav 文件。所以我在这里搜索问题并认为我找到了答案,但我仍然无法弄清楚。现在我可以编写单独的 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;
            }
        }

    }

我是新手,所以我只是在学习,任何帮助将不胜感激。

谢谢。

4

1 回答 1

2

如果我理解正确,您只想向每个编写器写入一个样本,因此 for 的第三个参数WriteSamples应该是 1,并且 offset 应该增加 1。您可能已经从正在处理的示例中复制了 +=2字节数组中的 16 位音频。

于 2012-12-29T08:05:52.383 回答