我一直在嘗試將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。 :我在最終版本中使用了浮點...查看我的解決方案。 –