1
這可能是一個非常簡單的問題;我將一個單聲道WAV文件轉換爲一個short []數組,並且我有一個函數將其寫回WAV文件。一切正常。 (writeBuffer是短[]數組)c#將短陣列從單聲道wav文件轉換爲短陣列以寫成立體聲wav
byte[] dataBuffer = new byte[writeBuffer.Length * 2];
Buffer.BlockCopy(writeBuffer, 0, dataBuffer, 0, dataBuffer.Length);
using (var targetFile = isoStore.CreateFile("temp.wav"))
{
WriteHeader(targetFile, (int)dataBuffer.Length, 1, SamplesPerSecond);
int start = 0;
targetFile.Write(dataBuffer, start, (int)dataBuffer.Length);
targetFile.Flush();
targetFile.Close();
}
我的問題是什麼,我需要做的是短陣爲了要把它寫成一個立體聲文件;如果我寫我的WAV頭的WAV有2個通道(現在我寫它具有:1),通過改變下面一行:
WriteHeader(targetFile, (int)dataBuffer.Length, 2, SamplesPerSecond);
,我需要做的,我的短[]數組是什麼?例如,每一個第二個元素會被視爲第二個通道的一部分?所以我需要創建一個短[] writeBuffer.Length * 2,然後writeBuffer的每個值寫入新的數組作爲這樣:
short[] newBuffer = new short[writeBuffer.Length*2];
for (int i=0; i< newBuffer.Length;i = i + 2)
{
newBuffer[i] = writeBuffer[i];
newBuffer[i+1] = writeBuffer[i];
}
會變成這樣正確的嗎?或者,我是否正在對一個立體聲文件與單聲道文件如何寫入short []數組做一個不正確的假設?