WaveChannel32给了我一个例外:偏移和长度超出范围

时间:2010-01-03 12:37:37

标签: c# .net naudio audio-processing

使用NAudio库我正在尝试使用WaveMixerStream32混合一些音频,所以我使用WaveChannel32以适当的格式为它提供流。我有以下消息的例外:

  

偏移量和长度超出范围   对于数组或计数大于   从索引到的元素数量   源集合的结束。

我可以做的最小例子也抛出那个错误,根本不包括WaveMixerStream32,我得出的结论是问题在于我如何使用WaveChannel32。代码是这样的:

var audio = new WaveFileReader(OriginalAudioFileName);
var audio32 = new WaveChannel32(new WaveFileReader(OriginalAudioFileName));
WaveFileWriter.CreateWaveFile(PublicAudioFileName + "audio.wav", audio);
WaveFileWriter.CreateWaveFile(PublicAudioFileName + "audio32.wav", audio32);

audio.wav生成就好了。 audio32.wav是58个字节,该行抛出异常。

有什么问题?

2 个答案:

答案 0 :(得分:2)

我很容易得到一个复制品。这看起来像是WaveChannel32.Read()中的一个基本错误,它不能正确处理具有多个通道的.wav文件。 numBytes参数看起来像文件的大小,而不是流。

project owner know。您可以将问题添加到相当长的列表中。

答案 1 :(得分:2)

是的,这是NAudio中的一个错误。谢谢你报道。我已经检查过修复(WaveChannel32.GetSourceBuffer有问题)。您还需要知道在调用WaveFileWriter.CreateWaveFile之前必须在WaveChannel32上将PadWithZeroes设置为false,否则您将创建一个永无止境的WAV文件,慢慢填满您的硬盘。