2

使用 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 字节,该行引发了异常。

怎么了?

4

2 回答 2

2

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

项目业主知道。不过,您会将您的问题添加到一个相当长的列表中。

于 2010-01-03T13:00:45.770 回答
2

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

于 2010-01-04T11:06:38.153 回答