获取音频样本值

时间:2019-01-26 17:46:08

标签: c#

如何在C#中打印和修改音频样本值?

byte[] array = File.ReadAllBytes("C:\\audioclip.wav");

for (int i = 44; i < array.Length - 1; i++)
{
    Console.WriteLine(" byte " + i + "  value  " + array[i]);
    System.Threading.Thread.Sleep(100);
}

对吗?

1 个答案:

答案 0 :(得分:0)

.wav文件 可能会被压缩,如果这样,样本值将不会存储为简单字节。您将需要使用一个库(如注释中所述)。

如果文件未压缩,则几乎正确。未压缩的.wav文件包含16位样本,而不是8位。因此,ReadAllBytes并不是很有帮助。

例如,使用BinaryReaderreader.ReadInt16()来读取每个样本,例如

List<Int16> sampleBuffer = new List<Int16>();
using(var inputStream = File.Open(inputFile)){
 using (var reader = new BinaryReader(inputStream))      
 {           
     while (inputStream.Position < inputStream.Length)
         sampleBuffer.Add(reader.ReadInt16());      
 }
}