从NAudio WasapiLoopbackCapture获取样本数据

时间:2016-11-24 05:16:07

标签: c# naudio

我正在使用来自NAudio C#库的WasapiLoopbackCapture来捕获发送到我的计算机扬声器的音频。我的目标是获取样本并将其发送到FFT函数以获取频谱数据。

我正在试图找出如何准确地解析传入的音频数据,但似乎我的问题的答案分散并分散在几个博客帖子和Stack Overflow答案中,所以我想得到一个明确的回答我的情况。

我的waveIn.WaveFormat说我有32位/样本和2个通道。它还说编码是IeeeFloat

根据我收集的信息,左右声道样本是交错的(左,右,左,右等),如果有4个字节/样本,则缓冲区中的每4个字节组成一个样本(这对大多数人来说可能是显而易见的,但我想验证)。还有,数据是小端吗?并且BitConverter.ToSingle()函数会处理这个吗?

这是我的代码:

static void Main(string[] args)
{
    IWaveIn waveIn = new WasapiLoopbackCapture();
    waveIn.DataAvailable += waveIn_DataAvailable;
    waveIn.StartRecording();
}

static void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
    for (int i = 0; i < e.BytesRecorded; i += 8)
    {
        float leftSample = BitConverter.ToSingle(e.Buffer, i);
        float rightSample = BitConverter.ToSingle(e.Buffer, i + 4);
    }
}

这是否能正确恢复样本?

0 个答案:

没有答案