我一直在尝试将32位立体声wav转换为16位单声道wav。我使用naudio捕捉声音,并认为只使用四个更重要的字节中的两个就可以工作。Naudio - 将32位wav转换为16位wav
下面是DataAvailable实现:
void _waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
byte[] newArray = new byte[e.BytesRecorded/2];
short two;
for (int i = 0, j = 0; i < e.BytesRecorded; i = i + 4, j = j + 2)
{
two = (short)BitConverter.ToInt16(e.Buffer, i + 2);
newArray[j] = (byte)(two & 0xFF);
newArray[j + 1] = (byte)((two >> 8) & 0xFF);
}
//do something with the new array:
}
任何帮助将不胜感激!
16位采样被签名; 32位样本不可能是首位整数(浮点代替) –
感谢您的帮助!我一定是做错了,因为它不像你说的那样工作。对于立体声到单声道,我成功地在我的应用程序中使用了立体声信号,这更好。谢谢! –
@RomanR。 :我在最终版本中使用了浮点...查看我的解决方案。 –