我无法将频道缓冲区分成新文件。
以下是提取每个通道缓冲区的代码:
int samplesDesired = 10000;
byte[] buffer = new byte[samplesDesired * 4];
short[] left = new short[samplesDesired];
short[] right = new short[samplesDesired];
using (WaveFileReader pcm = new WaveFileReader(filePath))
{
int bytesRead = pcm.Read(buffer, 0, 10000);
int index = 0;
for (int i = 0; i < bytesRead / 4; i++)
{
left[i] = BitConverter.ToInt16(buffer, index);
index += 2;
right[i] = BitConverter.ToInt16(buffer, index);
index += 2;
}
}
以下是我尝试从收集的缓冲区创建文件的方法:
using(var leftChannelFile = new WaveFileWriter("test.wav", new WaveFormat()))
{
leftChannelFile.WriteSamples(left, 0, left.Length);
}
问题是,当我尝试播放&#34; file.wav&#34;时,它是0秒长,19.5 KB大。任何关于为什么会发生这种情况的想法?
答案 0 :(得分:0)
您可以设置结果文件的标题,表明它是一个通道/单声道,
OR
将第二个空频道添加到结果文件中(全部为0字节)