1

我想拆分 mp3 文件的音频数据并对每个块执行FFT 转换

到目前为止,我从音频流中读取的所有尝试都没有奏效。这是我最后一次尝试的代码(它使用 wav 文件)

        using (var ms = File.OpenRead("reggae.wav"))
         using (var rdr = new WaveFileReader(ms)) 
         {
             int steps = 100;
             int stepSize = (int)rdr.Length / steps;

             byte[][] audData = new byte[steps][];


             for (int i = 0; i < 10; i++)
             {
                 audData[i] = new byte[stepSize];
                 rdr.Read(audData[i], i * steps, stepSize);
             }

         }

使用此代码,我得到一个数组越界异常。

我必须使用什么样的流以及如何从中读取数据?

有没有关于 naudio api 的文档

4

1 回答 1

3

数组越界异常是由您将偏移量的非零值传递给 Read 方法引起的。它应该是:

rdr.Read(audData[i], 0, stepSize);

网上有几篇文章解释了如何在 NAudio 中做不同的事情

有关在 NAudio 中使用 FFT 的示例,请查看 NAudio 源代码中的 WpfDemo 应用程序,以及 .NET 录音机应用程序源代码(希望不久将出现另一篇关于 Coding4Fun 的文章)。

于 2010-12-17T09:27:31.933 回答