我使用Pcm16BitToSampleProvider将WaveProvider16转换为SampleProvider。然后我将它添加到MixingSampleProvider中。日志确实表明两者都是IeeeFloat。但程序在AddMixerInput行停止,错误是所有混音器输入必须具有相同的WaveFormat。
想到我错过了什么?
myWaveProvider = new MyWaveProvider16();
mySampleProvider = new Pcm16BitToSampleProvider(myWaveProvider);
mixerBusWaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(8000, 1);
myMixer = new MixingSampleProvider(mixerBusWaveFormat);
myMixerSampleSource = new MixerSampleSource();
Debug.WriteLine("mySampleProvider waveformat: " + mySampleProvider.WaveFormat.ToString());
Debug.WriteLine("myMixer waveformat: " + myMixer.WaveFormat.ToString());
myMixer.AddMixerInput(mySampleProvider);
输出:
mySampleProvider waveformat:IeeeFloat
myMixer waveformat:IeeeFloat
NAudio.dll中出现'System.ArgumentException'类型的第一次机会异常 NAudio.dll
中发生了未处理的“System.ArgumentException”类型异常附加信息:所有混音器输入必须具有相同的WaveFormat
答案 0 :(得分:2)
用户错误:采样率不匹配。
这一行:
myWaveProvider = new MyWaveProvider16();
应该是:
myWaveProvider = new MyWaveProvider16(8000, 1);
否则默认为44100。