我想从.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/

10-13 06:27