我想从.wav文件到屏幕绘制一点波形。这是我到目前为止创建的代码:
NAudio.Wave.WaveFileReader wave = new NAudio.Wave.WaveFileReader(@"C:\test.wav");
long le = wave.Length;
byte[] data = new byte[le];
wave.Read(data, 0, (int)le);
for (int i = 0; i < 100; i++)
{
System.Console.WriteLine(data[i]);
}
System.Console.ReadKey();
我只是尝试获取数据块的前100个样本,但我不完全了解结果。这些数字是声波的振幅值吗?
最佳答案
您的WAV文件可能是16位的(您可以通过查看WaveFileReader的WaveFormat属性并查看BitDepth来进行检查)。在这种情况下,每两个字节代表一个样本。您可以使用BitConverter.ToInt16
逐个检查每个样本的值。因此,例如,您可以将代码修改为如下所示:
NAudio.Wave.WaveFileReader wave = new NAudio.Wave.WaveFileReader(@"C:\test.wav");
byte[] data = new byte[200];
int read = wave.Read(data, 0, data.Length);
for (int i = 0; i < read; i+=2)
{
System.Console.WriteLine(BitConverter.ToInt16(data,i));
}
System.Console.ReadKey();
关于c# - 在C#中使用NAUDIO分析WAV文件中的数据块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12646344/