我想拆分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的文档?
答案 0 :(得分:3)
数组超出范围异常是由于将offset的非零值传递给Read方法引起的。它应该是:
rdr.Read(audData[i], 0, stepSize);
网上有几篇文章解释了如何在NAudio中做不同的事情
有关对NAudio使用FFT的示例,请查看NAudio源代码中的WpfDemo应用程序,以及.NET语音记录器应用程序source code(希望很快会出现关于Coding4Fun的另一篇文章)。