如何在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);
}
对吗?
答案 0 :(得分:0)
.wav
文件 可能会被压缩,如果这样,样本值将不会存储为简单字节。您将需要使用一个库(如注释中所述)。
如果文件未压缩,则几乎正确。未压缩的.wav
文件包含16位样本,而不是8位。因此,ReadAllBytes
并不是很有帮助。
例如,使用BinaryReader
和reader.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());
}
}