【发布时间】:2012-08-18 14:42:34
【问题描述】:
我正在使用 NAudio 和 C# 将波形文件转换为 48,000、8 位、单声道。我将转换后的数据存储在字节数组中。我的代码如下。它工作正常,但是新的波形文件数据是未签名的,我需要它来签名。
WaveFormat target = new WaveFormat(48000, 8, 1);
WaveStream stream = new WaveFileReader(this.FilePath);
WaveFormatConversionStream conv = new WaveFormatConversionStream(target, stream);
this.ConvertedData = new byte[conv.Length];
conv.Position = 0;
conv.Read(this.ConvertedData, 0, Convert.ToInt32(conv.Length));
stream.Dispose();
conv.Dispose();
我试过在数据转换后循环遍历字节数组,每个字节减去128,这是我在这个网站上找到的解决方案。
for (int i = 0; i < end; i++)
{
signed = (int)this.ConvertedData[i] - 128;
this.Data[i] = (byte)signed;
}
这种方法可行,但不是万无一失的,我相信一定有更好的方法。任何建议将不胜感激。谢谢。
【问题讨论】:
-
根据这个wav文件格式的描述,当你使用8位时,值只能是无符号的。 sonicspot.com/guide/wavefiles.html "当样本用 8 位表示时,它们被指定为无符号值"
-
不确定这个网站是否会有所帮助,但它可能会更好地解释你能做什么和不能做什么stackoverflow.com/questions/11711689/…
标签: c# audio naudio wave type-conversion