目前我已经成功将WAVE文件的左右声道分离,并将头部信息存储在一个byte[]数组中。我的下一步是同时播放两个声道,你能告诉我如何实现吗?
以下是代码片段:
byte[] song_left = new byte[fa.Length];
byte[] song_right = new byte[fa.Length];
int p = 0;
for (int c = 0; c < 43; c++)
{
song_left[p] = header[c];
p++;
}
int q = 0;
for (s = startByte; s < length; s = s + 3)
{
song_left[s] = sLeft[q];
q++;
s++;
song_left[s] = sLeft[q];
q++;
}
p = 0;
for (int c = 0; c < 43; c++)
{
song_right[p] = header[c];
p++;
}
这部分代码从左右声道读取头部和数据,并将其保存到数组sLeft[]和sRight[]中。这一部分工作完美。
获取字节数组后,我进行了以下操作:
System.IO.File.WriteAllBytes("c:\\left.wav", song_left);
System.IO.File.WriteAllBytes("c:\\right.wav", song_right);
新增了一个按钮,用于播放保存的波形文件:
private void button2_Click(object sender, EventArgs e)
{
spWave = new SoundPlayer("c:\\left.wav");
spWave.Play();
}
一旦我按下播放按钮,就会出现以下错误:
你有什么想法吗?System.dll 中发生了“System.InvalidOperationException”的未处理异常。
其他信息:波形标头损坏。