使用Naudio从MP3读取音频数据

时间:2010-12-16 16:52:19

标签: c# naudio

我想拆分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的文档

1 个答案:

答案 0 :(得分:3)

数组超出范围异常是由于将offset的非零值传递给Read方法引起的。它应该是:

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

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

有关对NAudio使用FFT的示例,请查看NAudio源代码中的WpfDemo应用程序,以及.NET语音记录器应用程序source code(希望很快会出现关于Coding4Fun的另一篇文章)。